poj 2406 Power Strings

【POJ2406】Power Strings 中文题意&题解&代码(C++) kmp求循环节,nex数组的性质 阅读详情
Power Strings
Time Limit: 3000MS Memory Limit: 65536K
Total Submissions: 34584 Accepted: 14310

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.

题目大意:求每个测试字符串的周期长度。

解题思路:利用KMP算法的next数组。next数组以0开始时,若len%(len-next[x]+1)不为0,则周期串是其本身,若不为0,周期长度为len/(len-next[x]+1).

解题过程:如果next数组起始值不同,周期长度求取公式稍有差异,注意不要混淆。

代码如下:

#include <cstdio>
#include <cstring>
const int maxn=1000010;
int next[maxn];
int len,x; 
char s[maxn];
void get_next()
{
    int i=1,j=0;
    next[1]=0;
    while(i<=len)
    {
        if(j==0||s[i]==s[j])
        {
            i++;
            j++;
            next[i]=j;
        }
        else
            j=next[j];
    }  
	x=i;
}

int main()
{
    while(scanf("%s",s)!=EOF)
    {
        if(s[0]=='.')break;
        len=strlen(s);
		for(int i=len;i>0;i--)
			s[i]=s[i-1];
		get_next();
		if(len%(len-next[x]+1))
			printf("1\n");
		else
        printf("%d\n",len/(len-next[x]+1));
    }
    return 0;
}


单波束与多波束声呐:从原理到应用场景的全面解析 本文全面解析了单波束与多波束声呐的工作原理、核心特点及应用场景。单波束声呐如精准的狙击手,适合高精度需求;多波束声呐则像高效的散弹枪,适用于快速测绘和大面积覆盖。文章还提供了选型指南和前沿发展趋势,帮助用户根据预算和需求选择最适合的声呐技术。 阅读详情

相关推荐

Code Ocean 上传代码 手把手教程

对于一些学术期刊,录用前会让把代码上传到Code Ocean上,但上传过程可能会遇到一些问题,小编分享一下自己的上传经验。他们会进行验证,验证通过,将自动发布。点此运行即可,但是运行比较慢。

u014071947的博客 1万+

POJ——Power Strings

DescriptionGiven 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, exponentiatio

Alex 647

Cadence电路原理图全部变成黄色如何解决?

Cadence电路原理图全部变成黄色如何解决?现象:解决方法: 最近用cadence仿真锁相环,拷贝师哥的library后打开,发现schematic中全部变成了黄色,但可以正常修改元件参数,正常仿真。仅仅影响使用效果,看起来超级难受。 现象: 1.电路元件及连线全部变为黄色 2.可以正常修改参数,电路ADE仿真 如下图所示: 解决方法: 重新导入display.drf文件,步骤如下: tool——Display Resource Manager,截图如下 完成上述步骤,显示如下界面,选择Merge选项

virtuoso~晓晓 1万+

POJ 2406 Power Strings(后缀数组做法超时)

POJ 2406 Power Strings(后缀数组) http://poj.org/problem?id=2406 题意:一个串确定是由一个或多个循环节构成的,现在要你求出这个串由最多几个循环节构成的.(即用串长除以最短循环节的长度). 分析:本题可以用KMP算法求解,简单方便代码段只有30行,O(n)复杂度: http://blog.youkuaiyun.com/u013480600/artic

code 1393

基于MATLAB/Simulink的四旋翼无人机PID控制与仿真(3)

《基于MATLAB/Simulink的四旋翼无人机PID控制与仿真》的第三篇,将为大家继续展示并完善控制与仿真模型。本文将在前文的基础上,完成控制环节增补、参数设置、测试等工作,在不考虑性能(低超调、快、准等)的前提下,保证系统对于一般输入(阶跃、斜坡)的响应稳定性。

jlx142857的博客 9320

CCC数字钥匙3.0标准解读(22)

介绍设备制造商服务器和车辆制造商服务器之间的通信协议.

weixin_41738640的博客 1748

SDUTOJ 2475 Power Strings

#include #include #include #define N 1000005 int next[N]; char s[N]; using namespace std; void getnext(char s[]) { int j=-1,i=0,len; next[0]=-1; len=strlen(s); while(i<=len) { if(j==-1||s[i]

R_Misaya的专栏 833

Win11下WSL2安装Ubuntu22.04避坑指南:从镜像源到C++环境配置

本文提供了一份详细的Win11下WSL2安装Ubuntu22.04的实战避坑指南。内容涵盖从WSL2核心安装、自定义安装路径,到更换国内镜像源以解决更新缓慢问题,并一站式配置完整的C++开发环境(包括GCC、CMake、vcpkg等),最后分享提升开发体验的进阶技巧,助你在Windows上打造高效的Linux开发工作站。

weixin_29260291的博客 562

Poj 2406 Power Strings

http://www.studyai.com/article/114bf471

Mercury的博客 482

Python爬虫实战:爬取Bilibili和YouTube视频、弹幕和评论

随着视频内容平台的爆发式增长,视频网站成为了人们获取信息、娱乐和知识的重要渠道。在这些平台上,视频、弹幕和评论数据可以为我们提供重要的信息,帮助我们了解用户的行为、视频的受欢迎程度以及内容的互动情况。本篇文章将带你实现一个Python爬虫,用来爬取Bilibili和YouTube上的视频、弹幕、评论等数据。我们将详细介绍爬虫的实现过程,使用最新的Python技术,并且会提供完整的代码。Bilibili网站提供了多种方式来获取视频数据,最直接的方式是通过其开放的API接口来获取视频、弹幕和评论等数据。

2201_76125261的博客 1775

主题045:四足机器人的运动仿真

四足机器人(Quadruped Robot)是模仿哺乳动物四肢运动设计的机器人系统,具有优异的地形适应性和运动稳定性。与双足机器人相比,四足机器人在静态和动态稳定性方面具有天然优势,能够在复杂地形(如楼梯、斜坡、碎石地面)上稳定行走,因此在野外探索、救援任务、军事应用等领域具有广阔的应用前景。本教程将介绍四足机器人的运动学建模、步态规划、稳定性分析和控制策略,并通过Python仿真验证相关理论。典型的四足机器人每条腿包含3个关节:常见的腿部构型包括:对于单腿,足部位置 pfoot\mathbf{p}_{fo

kkchenjj的博客 679

POJ 2406 Power Strings

Power Strings Time Limit: 1000MS Memory limit: 65536K 题目描述 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 = "abc

叶孤心的专栏 765

化工设备应力分析软件:STAAD.Pro二次开发_(24).非线性分析技术

在STAAD.Pro 中,可以通过命令。

kkchenjj的博客 659

POJ - 2406 Power Strings

后缀数组DC3算法模板题,加了一个Debug()函数,依旧是模板题

The Blog Of Uncle_Sugar 339

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

POJ-2406 Power Strings

POJ-2406 Power Strings 题目链接:POJ-2406 题目大意:检测一个字符串从头开始最多有多少个重复片段 解题思路:利用kmp的求next数组的方法 求出next数组,之后看前缀和后缀最长的重合有多长 总长度减去重合的长度就是一个一个重复片段的长度 最后总长度除以一个重复片段的长度即可得出结果,当然如果总长度不是得出的重复片段长度的整数倍,说明只有最前面字符自己喽,输出一就...

鱼头的水题之路 277

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

POJ2406 Power Strings(Hash)

传送门 分析 枚举子串的长度,然后判断是否后面的没一段都与子串相等。 用字符串Hash判断是否相等。 代码 #include<bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define full(a,b) memset(a,b,sizeof a) #define ll long long #define ui u...

灰色的人的博客 373

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

KMP-(POJ 2406)Power Strings[字符串乘方]

KMP-(POJ 2406)Power Strings[字符串乘方] 题目链接:Power Strings 思路:最小循环节 看到乘方,很明显是求给定字符串由它的最小循环子串循环得到的次数 那就是求出NEXT数组,再而求出最小循环节长度:Len-NEXT[Len] 有三种情况,分两类 ①给定字符串循环子串是其本身:乘方等于1         a.NEXT[Len]...

[SZU_Crayon] 728

poj 2406 Power Strings

题意:求给定字符串最大循环次数 思路:根据KMP算法的next数组知,一个长度为n的字符串, if(n%(n-next[n])==0) 最小循环长度为 L=n-next[n]; 最大循环次数为 S=n/L=n/(n-next[n]);

happy_lcj 899

Power Strings (POJ-2406)

Power Strings (POJ-2406) 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...

菜鸡的博客 224

POJ 2406 Power Strings

题目链接:http://poj.org/problem?id=2406 参考:http://blog.youkuaiyun.com/u010489766/article/details/9272489 #include #include int next[1100000]; char str[1100000]; int len; void get_next() { int

u010489766的专栏 1037

POJ2406Power Strings

来源:http://poj.org/problem?id=2406  Power Strings Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 30293   Accepted: 12631 Description Given two strin

MummyDing's Blog 1065

【POJ 2406】Power Strings

问题描述 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

Fallen_Angel001的博客 349

POJ2406 Power Strings

题目链接:POJ2406 Power Strings Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 41439   Accepted: 17231 Description Given two strings a and b we defi

teddywang 361
上一篇: poj 1961 Period
下一篇: poj 2752 Seek the Name, Seek the Fame
雨狮子
博客等级 码龄12年 24粉丝 185原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值