zcmu-1986
1986: 周期串plus
Time Limit:?1 Sec??Memory Limit:?128 MBSubmit:?10??Solved:?7
[Submit][Status][Web Board]
Description
如果一個字符串可以由某個長度為k的字符串重復多次得到,我們說該串以k為周期。例如abcabcabcabc以3為周期(當然他也以6,12為周期)。輸入一個長度不超過100000的串,輸出他的最小周期。
Input
多組測試數據,每組僅一行為一個僅有大寫字母組成的字符串。
Output
對于每組數據輸出該字符串的最小周期。
Sample Input
HOHOSample Output
2
分析:第一眼看到100000以為這題是在卡時間,然后后面一直在優化代碼,但是發現,其實在判斷周期的時候有時
是重復的,這樣可以節省了許多時間,但是這題100000主要只是嚇嚇你,做出來并沒有卡在時間上。
這題沒什么好講的,直接進行求解。
代碼
#include<iostream> #include<cstdio> #include<cstring> #define max 100000+10 using namespace std;int find(char a[]) {if(a==NULL)return -1;int size = strlen(a);int len = size / 2;bool flag = true;for(int i = 1;i <= len;++i){flag = true;for(int j = 0;j < i;++j){for(int k = i+j;k < size;k+=i){if(a[j] != a[k]){flag = false;break;}}if(flag == false){break;}}if(flag){return i;}}return size; }int main() {char s[max];while(cin>>s){cout<<find(s)<<endl;} }
總結
- 上一篇: zabbix使用宏自动发现挂载的文件系统
- 下一篇: zcmu-1181(大数相加)