2 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N=1110000; char s[N]; int pre[N]; int main() { scanf("%s",s+1); int len= strlen(s+1); 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(pre[i+1]!=0 && (i+1)%(i+1-pre[i+1])==0 ) printf("%d %d\n",i+1,(i+1)/(i+1-pre[i+1]) ); } return 0; } -
0
#include<bits/stdc++.h> using namespace std; const int N=1110000; char s[N]; int pre[N]; int main() { scanf("%s",s+1); int len= strlen(s+1); 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(pre[i+1]!=0 && (i+1)%(i+1-pre[i+1])==0 ) printf("%d %d\n",i+1,(i+1)/(i+1-pre[i+1]) ); } return 0; }
- 1
信息
- ID
- 574
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 4
- 标签
- 递交数
- 75
- 已通过
- 36
- 上传者