[POJ 2406]Power Strings(kmp)
来源:互联网 发布:网络彩票停售 编辑:程序博客网 时间:2024/06/08 06:57
点击打开题目
Power Strings
Time Limit: 3000MS Memory Limit: 65536KTotal Submissions: 50554 Accepted: 21087
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
题意:就是问一个字符串写成(a)^n的形式,求最大的n.
题解:根据KMP的next函数的性质,已知字符串t第K个字符的next[k],那么d=k-next[k],如果k%d==0,那么t[1……k]最多可均匀的分成k/d份。也就是可以生成一个长度为d的重复度为k/d的字串。
代码:
#include<iostream>#include<cstring>#include<stdio.h>using namespace std;const int MAX=1e6+10;char s[MAX];char t[MAX];int Next[MAX]; int n,m;int ans=0;void getNext(){int i=0,j=0;Next[0]=-1;j=Next[i];while(i<m){if(j==-1||t[i]==t[j]){i++;j++;Next[i]=t[i]==t[j]?Next[j]:j;}else{j=Next[j];}}}int main(){while(~scanf("%s",t)){if(t[0]=='.')break;m=strlen(t);getNext();ans=1;//最小是1,不初始化会WAif(m%(m-Next[m])==0)//判断是否能整除
ans=m/(m-Next[m]);
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)
- 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)
- 大数据平台搭建(hadoop+spark)
- ubuntu16.04上安装mysql
- 数据库事务的四大特性以及事务的隔离级别
- 布隆过滤器-原理介绍
- Hdu6129 Just do it(2017多校第7场)
- [POJ 2406]Power Strings(kmp)
- iOS开发——Appcode代码检查分析
- zabbix 安装历程
- 2017年迄今最新人工智能资源盘点
- java 基于阿里大于(阿里云短信通讯)开发短信验证码
- Cake slicing UVA
- Java类和对象 详解(一)
- ButterKnife使用时onclick点击无效
- Android极光推送之前台弹出对话框