Description
卡斯丁狗喜欢吃糖葫芦(喜欢前面再加两个字“并不”),但是,但是,他很挑剔,他只吃这样的,就是这样的,就是,就是不管你从哪一头吃,看起来都是一样的,卡斯丁狗给你了一个很长的串,他记得这个很长的串有N个长度一样且满足上述的条件的串组成,你告诉他,他有没有记错。
Input
一个字符串,和一个数N(N<=1000)
Output
YES或者NO
Sample Input
abbatxxt 2
abbatxtc 2
Sample Output
YES
NO
#include<stdio.h>
#include<string.h>
char a[100000];
char b[2000][100];
int main()
{
int n,flag;
while(scanf("%s%d",a,&n)!=EOF)
{
int l=strlen(a);
int ll=l/n;
if(l%n!=0)
printf("NO\n");
else
{
for(int i=0;i<n;i++)
{
for(int ii=0;ii<ll;ii++){
b[i][ii]=a[ii+i*ll];
//printf("%c,%d\n",b[i][ii],ii+i*ll);
}
//printf("\n");
}
flag=1;
//printf("%d,%d\n",ll,n);
for(int i=0;i<n;i++)
{
for(int ii=0;ii<(ll/2);ii++)
{
//printf("%c,%c\n",b[i][ll-ii-1],b[i][ii]);
if(b[i][ll-ii-1]!=b[i][ii])
{
flag=0;
break;
}
}
if(!flag)
break;
}
if(flag)
printf("YES\n");
else
printf("NO\n");
}
}
return 0;
}
思路:把源文本分开,然后从两边开始找,如果有一次不同则输出no,如果全部相同输出yes