2 条题解
-
0
#include <bits/stdc++.h> using namespace std; const int N = 1110000; char s[N]; int pre[N]; int main() { while (scanf("%s", s + 1) != EOF) { int len = strlen(s + 1); if (len == 1 && s[1] == '.') break; memset(pre, 0, sizeof(pre)); for (int i = 1, j = pre[i]; i < len; i++, j = pre[i]) { while (j > 0 && s[i + 1] != s[j + 1]) j = pre[j]; if (s[i + 1] == s[j + 1]) pre[i + 1] = j + 1; } if (len % (len - pre[len]) == 0) printf("%d\n", len / (len - pre[len])); else printf("1\n"); } return 0; } -
0
#include<bits/stdc++.h> using namespace std; const int N=1110000; char s[N]; int pre[N]; int main() { while(scanf("%s",s+1)!=EOF) { int len=strlen(s+1); if(len==1 && s[1]=='.')break; memset(pre,0,sizeof(pre)); for(int i=1,j=pre[i];i<len;i++,j=pre[i]) { while(j>0&&s[i+1]!=s[j+1])j=pre[j]; if(s[i+1]==s[j+1])pre[i+1]=j+1; } if(len%(len-pre[len])==0)printf("%d\n",len/(len-pre[len])); else printf("1\n"); } return 0; }
- 1
信息
- ID
- 573
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- 递交数
- 120
- 已通过
- 46
- 上传者