COGS 1710. [POJ2406]字符串的幂
2024-09-07 20:23:20
★☆ 输入文件:powerstrings.in
输出文件:powerstrings.out
简单对比
时间限制:3 s 内存限制:256 MB
【题目描述】
对于给定的两个字符串a,b,我们定义a*b是将把它们连接在一起形成的字符串。例如,若a="abc",b="def",则a*b="abcdef"。如果我们将这种运算视为乘法,则非负整数的乘方运算被以类似的方式定义:a^0=""(空字符串),a^(n+1)=a*(a^n)。
【输入格式】
输入包含多组数据。
每组数据有一行一个大写字母组成的字符串s,其长度至少为1,至多为10^6.输入结束标志为一行一个“.”(半角句号)。
【输出格式】
输出使得存在某个a,使得a^n=s的最大n。
【样例输入】
ABCD
AAAA
ABABAB
.
【样例输出】
1
4
3
【提示】
输入文件可能很大,请使用scanf代替cin以避免超时。
【来源】
还是不会巧方法。。
其实观察一下next数组就发现他的神奇。。
(1)若2*next[len] < len 则最小重复单元长度为len那么他重复次数为1
(2)若2*next[len] > len 则:
1>:如果len%(len-next[len]) == 0则最小重复单元长度为len - next[len],那么其重复次数为len/(len-next[len]).
2>:如果len%(len - next[len]) != 0 则最小重复单元长度为:len,那么其重复次数为1
#include <cstring>
#include <cstdio>
#define N 1000005 char str[N];
int Next[N];
void Get_next(int ln)
{
int i=,j=-;
Next[i]=j;
for(;i<ln;)
{
if(j==-||str[i]==str[j]) i++,j++,Next[i]=j;
else j=Next[j];
}
}
int main()
{
for(;;)
{
scanf("%s",str);
if(str[]=='.') break;
int len=strlen(str);
Get_next(len);
/* for(int i=1;i<=len;i++) printf("%d ",Next[i]);
printf("\n");*/
if(*Next[len]<len) printf("1\n");
else
{
if(len%(len-Next[len])==) printf("%d\n",len/(len-Next[len]));
else printf("1\n");
}
}
return ;
}
最新文章
- vuex 使用笔记
- 【Java EE 学习 22 下】【单线程下载】【单线程断点下载】【多线程下载】
- 爱上MVC~一个Action多套View模版的设计
- SDK 移动应用开发系统
- C#微信公众号开发-MVC模式公共类封装
- UVA 11736	 Debugging RAM
- JavaWeb 之 重复提交表单和验证码相关的问题!
- php上传图片到server
- Python之编写登陆接口
- TWS日志查看
- 实例讲解webpack的基本使用第三篇
- 如何学习java
- hadoop 数据倾斜
- 网站SEO优化问答精选
- spring中注解式事务不生效的问题
- Java NIO核心组件简介
- 《Pro SQL Server Internals, 2nd edition》
- supervisor来自动化部署,集成git
- UOJ347 WC2018 通道 边分治、虚树
- Windows has encountered a critical problem and will restart automatically in one minute. Please save your work now
热门文章
- wannafly test D
- Introduction to Multi-Threaded, Multi-Core and Parallel Programming concepts
- 1.1-1.5 flume架构概述及安装使用
- 3.4-3.6 Hive Storage Format
- 国内互联网公司的开源项目及github地址汇总
- 微信小程序开发之页面注册
- Flutter实战视频-移动电商-30.列表页_商品列表UI界面布局
- tomcat的bin文件夹下的.bat和.sh文件
- 利用StringBuffer来替换内容
- 洛谷 - UVA11424 - GCD - Extreme (I) - 莫比乌斯反演 - 整除分块