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.
![](http://espresso.codeforces.com/c0fa34f69fd1cf7875db34e4b2f9378c8fa9779a.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个等长回文串组成的
思路:
水题,暴力
#include <iostream> #include <stdio.h> #include <string.h> #include <stack> #include <queue> #include <map> #include <set> #include <vector> #include <math.h> #include <bitset> #include <algorithm> #include <climits> using namespace std; #define LS 2*i #define RS 2*i+1 #define UP(i,x,y) for(i=x;i<=y;i++) #define DOWN(i,x,y) for(i=x;i>=y;i--) #define MEM(a,x) memset(a,x,sizeof(a)) #define W(a) while(a) #define gcd(a,b) __gcd(a,b) #define LL long long #define N 500005 #define MOD 1000000007 #define INF 0x3f3f3f3f #define EXP 1e-8 #define lowbit(x) (x&-x) char str[1005]; int len; int main() { int i,j,k; while(~scanf("%s%d",str,&k)) { len = strlen(str); if(len%k) { printf("NO "); continue; } int r = len/k,flag = 0; for(i = 0; i<len; i+=r) { for(j=i; j<i+r; j++) { if(str[j]!=str[(i+r)-1-j+i]) { flag = 1; break; } } if(flag) break; } if(flag) printf("NO "); else printf("YES "); } return 0; }