UVALive - 3026:Period
2017-11-27 14:01
344 查看
用KMP里面的next数组即可,原理就是next数组的原理
#include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #include<vector> #define MAXN 1000000+10 #define ll long long using namespace std; char s[MAXN]; int n; int nxt[MAXN]; void solve(){ scanf("%s",s+1); memset(nxt,0,sizeof(nxt)); nxt[1]=0; int k=0; for(int i=2;i<=n;i++){ while(k&&s[k+1]!=s[i])k=nxt[k]; if(s[k+1]==s[i])k++; nxt[i]=k; if(nxt[i]&&i%(i-nxt[i])==0){ printf("%d %d\n",i,i/(i-nxt[i])); } } } int main() { // freopen("data.in","r",stdin); int T=0; while(1){ scanf("%d",&n); if(!n)break; printf("Test case #%d\n",++T); solve(); printf("\n"); } return 0; }
相关文章推荐
- UVALive 3026 (LA 3026) Period KMP求字符串周期
- UVALive 3026 Period (KMP上的dp,学习ac自动机的前奏)
- uvalive 3026 Period KMP(失配函数)
- Uvalive - 3026 Period (kmp求字符串的最小循环节+最大重复次数)
- 【暑假】[实用数据结构]UVAlive 3026 Period
- UVALive 3026 Period KMP 失配函数处理周期的问题
- Period UVALive - 3026(KMP)
- Period UVALive - 3026(KMP)
- UVALive - 3026 - Period (KMP)
- UVALive 3026 Period (KMP算法简介)
- uvaLive 3026 - Period 水KMP循环结
- UVALive - 3026 Period
- UVALive 3026 period(周期) kmp算法的应用
- uva 1328 && Live Archive 3026 Period
- 【暑假】[实用数据结构]UVAlive 3026 Period
- uvalive3026 Period (KMP+结论)
- uvalive 3026 Period (前缀最短循环节)
- UVALive 3026 Period(KMP裸)
- [UVALive3026] Period && 字符串
- UVALive 3026 Period ( kmp 求前缀最小循环节)