POJ 2406 Power Strings [KMP+循环节规律]
来源:互联网 发布:手机查看守望先锋数据 编辑:程序博客网 时间:2024/04/30 13:30
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.
题目大意:给一个字符串,要求这个字符串是由多少个连续的子串组成的;
题解:对于next数组, next[len]就是最后一个字符的位置,如果他有相同的子串,则 长度为len-next[len] 所以只需要把next数组求出来然后取余判断,如果没有相 同的,则只有他自己,即为1;
AC代码:
#include <iostream>#include <cmath>#include<cstdio>#include <cstring>#include <algorithm>#define N 10000005using namespace std ;char a[N] ;int len , n , next[N];void kkk(){ int i , j ; i = 0; j = next[0] = -1; while(i < len) { while(j!=-1&&a[i]!=a[j]) j = next[j]; next[++i] = ++j; }}int main(){ while(scanf("%s",a)) { if(a[0]=='.') break; len = strlen(a); memset(next,0,sizeof(next)); kkk(); int ans ; if(len%(len-next[len])==0) ans = len/(len-next[len]); else ans = 1; cout<<ans<<endl; } return 0 ;}
0 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) 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求循环节)
- jQuery-遍历
- 浅谈机器翻译之瓶颈及目前的研发趋势
- redis[0] 通讯报文协议
- 汇编语言(四) debug 常用命令
- 一、FrameBuffer 原理、实现与应用 写屏(转)
- POJ 2406 Power Strings [KMP+循环节规律]
- Dockfile
- 图像处理-线性滤波-3 高斯滤波器
- centos安装MYSQL 5.6
- C语言练习篇-2交换两个变量的值
- 【JavaScript】 高级函数
- PHP 数组排序
- MongoDB中Criteria查询
- 南阳理工学院 ACM OJ-- 题目6 喷水装置(一) (贪心暴力)