记录编号 283149 评测结果 AAAAAAAAAA
题目名称 [POJ2406]字符串的幂 最终得分 100
用户昵称 Gravatar森林 是否通过 通过
代码语言 C++ 运行时间 0.166 s
提交时间 2016-07-14 10:19:31 内存使用 5.08 MiB
显示代码纯文本
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cstdio>
  4. #include <cmath>
  5. #include <cstring>
  6. #include <ctime>
  7. #include <algorithm>
  8. #include <stack>
  9. #include <queue>
  10. #include <vector>
  11. #include <iomanip>
  12. #include <map>
  13. #include <functional>
  14. #define JW fclose(stdin); fclose(stdout);
  15. #define WJ(name) freopen(#name".in","r",stdin);freopen(#name".out","w",stdout);
  16. using namespace std;
  17. const int maxn=1000010;
  18. char str[maxn];
  19. int ans=0,fail[maxn],n;
  20. void getfail(){
  21. fail[0]=fail[1]=0;
  22. for(int i=1;i<n;i++){
  23. int j=fail[i];
  24. while(j&&str[i]!=str[j])j=fail[j];
  25. fail[i+1] = str[i]==str[j] ? j+1:0;
  26. }
  27. }
  28. int main(){
  29. WJ(powerstrings);
  30. while(scanf("%s",str),n=strlen(str),!(str[0]=='.'&&n==1)){
  31. getfail();
  32. if(!(n%(n-fail[n])))printf("%d\n",n/(n-fail[n]));
  33. else puts("1");
  34. }
  35. JW;
  36. return 0;
  37. }
  38.