⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pku2406.cpp

📁 内有KMP的模板和pku2406
💻 CPP
字号:
//////POJ2406 Power Strings
////KMP

#include <stdio.h>
#include <string.h>

const int MAX = 1000000+10;

char line[MAX];
int n, nextval[MAX];

int main() {
//   freopen("10298.in", "r", stdin);
//   freopen("10298.out", "w", stdout);
   
   while (scanf("%s",line) && strcmp(line, ".")) {
      n = strlen(line);
      memmove(line + 1, line, n);
      
      int i, pos;
      pos = nextval[1] = 0;
      for (i = 2; i <= n; i++) {
         while (pos && line[pos + 1] != line[i])
            pos = nextval[pos];
         if (line[pos + 1] == line[i]) pos++;
         nextval[i] = pos;
      }
      
      int sub = n - nextval[n], ans;
      if (n % sub == 0) ans = n / sub;
      else ans = 1;
      
      printf("%d\n", ans);
   }
   
   return 0;         
}   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -