POJ 2406 Power Strings(kmp)
来源:互联网 发布:光纤网络是哪个公司的 编辑:程序博客网 时间:2024/05/17 01:20
Language:
Power Strings
Time Limit: 3000MS Memory Limit: 65536KTotal Submissions: 33335 Accepted: 13852
Description
Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc" and b = "def" then a*b = "abcdef". If we think of concatenation as multiplication, exponentiation by a non-negative integer is defined in the normal way: a^0 = "" (the empty string) and a^(n+1) = a*(a^n).
Input
Each test case is a line of input representing s, a string of printable characters. The length of s will be at least 1 and will not exceed 1 million characters. A line containing a period follows the last test case.
Output
For each s you should print the largest n such that s = a^n for some string a.
Sample Input
abcdaaaaababab.
Sample Output
143
Hint
This problem has huge input, use scanf instead of cin to avoid time limit exceed.
Source
Waterloo local 2002.07.01
求一个串的最小周期
对于一个串,如果abcdabc 那么next[len]=3,那么len-next【len】就大于len/2,那么len%(len-next[len])!=0;而对于一个周期串ababab next[len]=4,此时len-next[len]应该等于
最小串的长度,所以是不是有最小周期就可以用len%(len-next[len])是否为0来判断,(个人理解,如有错,请想告)
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#include<stack>#include<vector>#define L(x) (x<<1)#define R(x) (x<<1|1)#define MID(x,y) ((x+y)>>1)#define eps 1e-8using namespace std;#define N 100005char a[N];int len,next[N];void getfail(char *a){ int i,j; len=strlen(a); i=0;j=-1; next[0]=-1; while(i<len) { if(j==-1||a[i]==a[j]){ i++; j++; next[i]=j;}elsej=next[j]; }}int main(){int i,j;while(scanf("%s",a)){if(a[0]=='.') break;getfail(a);int ans=len%(len-next[len]);if(ans==0)printf("%d\n",len/(len-next[len]));elseprintf("1\n");}return 0;}
1 0
- poj 2406:Power Strings(KMP)
- poj 2406 Power Strings(kmp算法)
- POJ 2406 Power Strings(kmp)
- POJ 题目2406 Power Strings(KMP)
- POJ 2406 Power Strings(kmp)
- poj 2406 Power Strings (KMp)
- POJ 2406 Power Strings (KMP)
- POJ 2406 Power Strings(KMP)
- poj-2406-Power Strings(KMP)
- poj 2406 Power Strings(kmp)
- poj 2406Power Strings(KMP入门)
- poj 2406 Power Strings(KMP || 暴力)
- poj 2406 Power Strings(KMP)
- POJ 2406 Power Strings(KMP)
- 【POJ】2406 - Power Strings(KMP)
- POJ 2406 Power Strings(KMP)
- poj 2406 Power Strings-字符串(kmp)
- poj 2406 Power Strings(KMP)
- PM8001驱动及相关模块分析——综述及初始化
- jquery随机新闻滚动切换效果
- 日语学习之新版初级标准日本语-19 部屋の かぎを 忘れないで ください
- 从两端生长的双向栈-C语言版
- poj_2533_Longest Ordered Su... poj_1260_Pearls hdu_1025_Constructing Roa... poj_2533_Longest Ordered
- POJ 2406 Power Strings(kmp)
- C++使用MD5
- 数字分隔(二)
- 2009年9月全国计算机等级考试四级笔试试卷网络工程师
- BZOJ 2730 HNOI2012 矿场搭建 Tarjan
- 挣值分析:预测技术
- POJ 2002 Squares 计算集合 点的hash
- Fragments之间的交互
- Android 调试 中 conversion to dalvik format failed with error 1的解决办法汇总