当前位置:首页 > 题解目录 > 正文内容

【题解】Power Strings

亿万年的星光7个月前 (04-11)题解目录389

【题目描述】

给定若干个长度 ≤106 的字符串,询问每个字符串最多是由多少个相同的子字符串重复连接而成的。如:ababab 则最多有 3 个 ab 连接而成。

【输入描述】

输入若干行,每行有一个字符串,字符串仅含英语字母。特别的,字符串可能为 . 即一个半角句号,此时输入结束。

【输出描述】

若干行,每个数一行。

【样例输入】

abcd
aaaa
ababab
.

【样例输出】

1
4
3


【参考答案】

#include <bits/stdc++.h>
using namespace std;
bool isRepeat(string str,int len) {
	bool flag = true;
	for(int i = len; i+len<=str.size(); i+=len) {
		for(int j = 0, t =i; j<len; j++,t++) {
			if(str[j]!=str[t]) {
				flag = false;
				break;
			}
		}
		if(!flag) false;
	}
	return flag;
}
int getM(string str) {
	for(int len = 1; len<str.size(); len++) {
		if(str.size()%len==0) {
			if(isRepeat(str,len)) {
				return str.size()/len;
			}
		}
	}
	return 1;
}
int main() {
	string word;
	while(cin>>word) {
		if(word==".")break;
		int res = getM(word);
		cout<<res<<endl;
	}
}


扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

【题解】石子合并(环形)

【题目描述】在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。试设计出一个算法,计算出将 N 堆石子合并...

【题解】寻找祖先

【题解】寻找祖先

【题目描述】给出充足的父子关系,请你编写程序找到某个人的最早的祖先。规定每个人的名字都没有空格,且没有任意两个人的名字相同。最多可能有1000组父子关系,总人数最多可能达到50000人,家谱中的记载不...

因子分解

【题目描述】输入一个数,输出其素因子分解表达式。【输入描述】输入一个整数 n (2≤n<100)。【输出描述】输出该整数的因子分解表达式。表达式中各个素数从小到大排列。如果该整数可以分解出因子a...

【题解】加密(2019青岛市程序设计竞赛)

【问题描述】文件加密最简单的方法是把文件的原文中的每个字母用另一个字母来代替。假设原文中只包括26个英文字母(有大写和小写),没有其他符号,且长度不超过100,加密规则如下:原文abcdefghijk...

【题解】山区建小学

【题目描述】政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往。已知任意两个相邻的村庄之间的距离为di(为正整数),其中,0<i<...

【题解】背包问题3

【题目描述】完全背包定义有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的体积是c,价值是w。求解将哪些物品装入背包可使这些物品的体积总和不超过背包容量,且价值总和最大。本题要求是背...