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