While Mike was walking in the subway, all the stuff in his back-bag dropped on the ground. There were several fax messages among them. He concatenated these strings in some order and now he has string s.
![](https://i-blog.csdnimg.cn/blog_migrate/92c669684dabc6dcf9fbfd52398f3747.png)
He is not sure if this is his own back-bag or someone else's. He remembered that there were exactly k messages in his own bag, each was a palindrome string and all those strings had the same length.
He asked you to help him and tell him if he has worn his own back-bag. Check if the given string s is a concatenation of k palindromes of the same length.
The first line of input contains string s containing lowercase English letters (1 ≤ |s| ≤ 1000).
The second line contains integer k (1 ≤ k ≤ 1000).
Print "YES"(without quotes) if he has worn his own back-bag or "NO"(without quotes) otherwise.
saba 2
NO
saddastavvat 2
YES
Palindrome is a string reading the same forward and backward.
In the second sample, the faxes in his back-bag can be "saddas" and "tavvat".
题意:
是否存在从头到尾k份相同的字符回文串。不在状态所以一直没弄懂什么意思,一直Wa。。。
AC代码:
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<cstdio>
#include<vector>
using namespace std;
typedef __int64 ll;
#define CRL(a) memset(a,0,sizeof(a))
#define T 10100
char s[1005];
int c[1005];
bool find(int i,int j)
{
while(i<j)
{
if(s[i]==s[j])i++,j--;
else break;
}
if(i>=j)return true;
return false;
}
int main()
{
/*freopen("input.txt","r",stdin);*/
int i,k,flag;
while(~scanf("%s",&s))
{
CRL(c);
scanf("%d",&k);flag=1;
int len = strlen(s);
if(len%k!=0){printf("NO\n");continue;}
k=len/k;
for(i=0;i<len;i+=k)
if(!find(i,i+k-1)){flag=0;break;}
if(flag)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}