poj 2406 Power Strings
来源:互联网 发布:高中数学知乎 编辑:程序博客网 时间:2024/06/06 05:09
点击打开链接
Power Strings
Time Limit: 3000MS Memory Limit: 65536KTotal Submissions: 52540 Accepted: 21871
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.
大意:给出一个字符串 问它最多由多少相同的字串组成
如 abababab由4个ab组成
分析:
kmp中的next数组求最小循环节的应用
例如
ababab next[6] = 4; 即
ababab
ababab
1~4位 与2~6位是相同的
那么前两位
就等于3、4位
3、4位就等于5、6位
……
所以 如果 能整除 也就循环到最后了
如果不能整除
就最后余下的几位不在循环内
例如
1212121
1212121
最后剩余1不能等于循环节
#include<iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;const int N = 1000005;char str[N];int Next[N];void getNext(){int len=strlen(str); Next[0] = -1; int i = 0, j = -1; while(i < len)//注意 { if(j == -1 || str[i] == str[j]) { i++; j++; Next[i] = j; } else j = Next[j]; }}int main(){ while(scanf("%s", str) && str[0] != '.') { int len=strlen(str); getNext(); int ans = 1; if(len%(len-Next[len])==0) ans=len/(len-Next[len]); printf("%d\n", ans); } return 0;}
参考网址
http://www.cnblogs.com/zhanzhao/p/4761477.html
阅读全文
0 0
- poj 2406 "Power Strings"
- poj 2406 Power Strings
- POJ-2406 Power Strings
- POJ 2406 Power Strings
- poj 2406 Power Strings
- POJ:2406 Power Strings
- poj 2406 Power Strings
- poj 2406 Power Strings
- poj 2406 Power Strings
- POJ 2406 Power Strings
- POJ 2406 - Power Strings
- poj 2406 Power Strings
- poj 2406 Power Strings
- POJ 2406 Power Strings
- POJ 2406 Power Strings
- POJ 2406 Power Strings
- poj 2406 Power Strings
- POJ 2406 Power Strings
- 多项式加法-->动态实现
- 1306求和
- 集合类
- LeetCode15. 3Sum
- Java中使用Apache POI使用解析excel文件
- poj 2406 Power Strings
- 任意输入一个年份,判断它是否是闰年。
- 中国剩余定理(详解)
- 习题5 5.3
- 216. Combination Sum III
- LeetCode18. 4Sum
- python3单行定义多个变量或赋值
- Installation guide for Kong custom plugins
- 鼠标移入和移出事件mouseenter VS mouseover 、mouseleave VS mouseout