POJ 2406 (KMP)
来源:互联网 发布:java与模式 pdf 编辑:程序博客网 时间:2024/06/06 02:28
Power Strings
Time Limit: 3000MS Memory Limit: 65536KTotal Submissions: 41709 Accepted: 17343
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
题意:求串的最小循环节的循环次数。
n-next[n]求出最小循环节,然后判断下是不是被长度整除。
#include <cstring>#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <cmath>using namespace std;#define maxn 1111111char T[maxn];int n;#define next Nextint next[maxn];void get_next (char *p) { int m = strlen (p); int t; t = next[0] = -1; int j = 0; while (j < m) { if (t < 0 || p[j] == p[t]) {//匹配 j++, t++; next[j] = t; } else //失配 t = next[t]; } } int main () { while (scanf ("%s", T) == 1) { n = strlen (T); if (n == 1 && T[0] == '.') break; get_next (T); int len = n-next[n]; if (n%len == 0) printf ("%d\n", n/len); else printf ("1\n"); } return 0;}
0 0
- poj 2406 KMP
- POJ 2406 KMP
- 【KMP】POJ 2406
- poj 2406 KMP应用
- POJ 2406 (KMP)
- POJ 2406 kmp
- poj 2406 KMP算法
- poj 2406 kmp
- poj 2406(kmp)
- POJ 2406 KMP
- POJ 2406 依然 KMP
- poj 2406 KMP
- POJ-2406(KMP)
- POJ 2406 KMP
- POJ 2406 (KMP)
- POJ 2406 KMP
- 字符串 KMP POJ 2406
- POJ 2406(kmp)
- android之interpolator的用法详解
- h5与css3权威指南初级(一)
- CentOS6.8 upgrade gcc to gcc4.8
- linux线程资源回收
- Maven学习8之对项目源文件打包
- POJ 2406 (KMP)
- HTML5 New Feature Series: Geolocation
- Spring 3 Conversion
- hdu 1372 Knight Moves
- JVM 优化细节点总结
- NSMutableDictionary中的小坑与初始化方法详解
- LeetCode 之 Search in Rotated Sorted Array II
- 制作Linux启动盘并安装Linux系统到实体机
- 1004 放盘子