题目
AC code
#include"cstdio"
#include"cstring"
#include"iostream"
using namespace std;
char s[90];
int period(char* s, int n){
int flag,i,ans;
for(i=1;i<n;i++){
flag=0;
ans=i;
//printf("ans i%d\n",ans);
if(n%i==0){
for(int j=0;j<i;j++){
for(int k=j;k<n;k+=i){
if(s[j]!=s[k]) {
flag=1;
break;
}
}
if(flag) break;
}
if(!flag) break;
}
}
ans=i;
return ans;
}
int main(){
int t;
while(scanf("%d",&t)==1){
//printf("\n");
int first=1;
while(t--){
if(first){
//printf("");
first=0;
}
else printf("\n");
scanf("%s",s);
int p=period(s, strlen(s));
int second=1;
if(second){
//printf("");
second=0;
}
else printf("\n");
printf("%d\n",p);
}
}
return 0;
}
总结
- 这次真的是仔细看题目了,却连续PE四次<0o0>;刚开始总以为自己把输出格式理解错了,就改格式提交然后PE;其实不然,还是程序的问题,(一点点小问题)就因为复制粘贴,忘了把变量名改了。一次教训啊!
这道题,输入输出都有规定的格式
Two consecutive input will separated by a blank line.
Two consecutive output are separated by a blank line.一些处理的小技巧break语句和标志变量flag的结合使用