Descripe
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/1b5468637f0e3952fad598c6bb0be599.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.
Input
The first line of input contains string s containing lowercase English letters (1 ≤ |s| ≤ 1000).
The second line contains integer k (1 ≤ k ≤ 1000).
Output
Print "YES"(without quotes) if he has worn his own back-bag or "NO"(without quotes) otherwise.
Sample test(s)
Input
saba
2
Output
NO
Input
saddastavvat
2
Output
YES
Note
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".
CODE:
#include <iostream> #include <cstdio> #include <cstring> #define REP(i, s, n) for(int i = s; i <= n; i ++) #define REP_(i, s, n) for(int i = n; i >= s; i --) #define MAX_N 1000 + 10 using namespace std; char ts[MAX_N], s[MAX_N]; int len[MAX_N], k; bool check(int l, int r){ int i = l, j = r; bool tmp = 1; while(i < j){ if(s[i] != s[j]){ tmp = 0; break; } i ++; j --; } if(tmp) return true; return false; } int main(){ scanf("%s", s + 1); scanf("%d", &k); int l = strlen(s + 1); if(l % k != 0){printf("NO\n"); return 0;} int num = l / k; int i = 1; bool ok = 1; while(i < l){ if(!check(i, i + num - 1)) ok = 0; i += num; } if(ok) printf("YES\n"); else printf("NO\n"); return 0; }