循环节
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
X最近爱上了一种奇怪的游戏,就是找出一个字符串中的最小循环节。
对于最小循环节的定义:对于字符串A存在字串B,使得A是由N个完整的B组成的,那么B就是A的一个循环节,长度最小的那一个为最小循环节。
输入
多组输入。
每组输入一个字符串,长度不大于80,只包含26个小写字母。
输出
输出一个字符串,代表最小循环节。
示例输入
aaaa abab
示例输出
a ab
提示
来源
zmx
示例程序
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
char a[100];
char b[100];
int main()
{
while(~scanf("%s",a))
{
int flag = 1;
int len = strlen(a);
int n,l,mm=0;
for(int i = 0;i<len;i++)
{
b[mm] = a[i];
flag = 1;
l = 0;
for(int j = mm+1;j<len;j++)
{
if(a[j]!=b[l++])
{
flag = 0;
break;
}
if(l==mm+1)
l = 0;
}
if(flag==1&&l==0)
break;
mm++;
}
b[++mm] = '\0';
puts(b);
}
return 0;
}