1. 程式人生 > >【ACM】Uva 455

【ACM】Uva 455

【題目】:如果一個字串可以由某個長度為k的字串重複多次得到,則稱該串以k為週期。輸入一個長度不超過80的字串,輸出其最小正週期。

注意以下幾點:

1、它的最小正週期一定可以被它的長度整除。

2第一個大迴圈下 i 可以等於 len ,因為在一個字串內如果沒有重複的字元,那麼將預設它的長度就是他的週期。

AC程式碼:

#include <iostream>
#include <cstdlib>
#include <stdio.h>
#include <string.h>
#include <string>
using namespace std;
int main()
{
	int T, i,j,len,flag;
	cin>>T;
	char s[100];
	while(T--)
	{
		cin>>s;
		len=strlen(s);
		for(i=1;i<=len;i++)
		{
			if(len%i==0)
			{
				flag=1;
				for(j=i;j<len;j++)
				{
					if(s[j]!=s[j%i])
					{
						flag=0;
						break;
					}
				}
				if(flag)
				{
					cout<<i<<endl;
					if(T)	cout<<endl;
					break;
				}
			}
		} 
	}
	return 0;
}