博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj——2406Power Strings(kmp专练)
阅读量:4048 次
发布时间:2019-05-25

本文共 1170 字,大约阅读时间需要 3 分钟。

Power Strings
Time Limit: 3000MS
Memory Limit: 65536K
Total Submissions: 41658
Accepted: 17323
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
abcd
aaaa
ababab
.
Sample Output
1
4
3
Hint
This problem has huge input, use scanf instead of cin to avoid time limit exceed.
Source

Waterloo local 2002.07.01

解题思路:找出循环节  用总长度除一下得出循环次数 如果除不尽说明循环一次

#include
#include
#include
using namespace std;int nexta[4000100];void getnext(string n){ int i=0,j=-1; nexta[0]=-1; while(i
>n&&n!=".") { getnext(n); i=n.size(); k=i-nexta[i];//循环节 if(i%k==0) { cout<

转载地址:http://ptfci.baihongyu.com/

你可能感兴趣的文章
【leetcode】Pascal's Triangle II (python)
查看>>
java自定义容器排序的两种方法
查看>>
如何成为编程高手
查看>>
本科生的编程水平到底有多高
查看>>
AngularJS2中最基本的文件说明
查看>>
从头开始学习jsp(2)——jsp的基本语法
查看>>
使用与或运算完成两个整数的相加
查看>>
备忘:java中的递归
查看>>
DIV/CSS:一个贴在左上角的标签
查看>>
Solr及Spring-Data-Solr入门学习
查看>>
Vue组件
查看>>
python_time模块
查看>>
python_configparser(解析ini)
查看>>
selenium学习资料
查看>>
<转>文档视图指针互获
查看>>
从mysql中 导出/导入表及数据
查看>>
HQL语句大全(转)
查看>>
几个常用的Javascript字符串处理函数 spilt(),join(),substring()和indexof()
查看>>
javascript传参字符串 与引号的嵌套调用
查看>>
swiper插件的的使用
查看>>