http://codeforces.com/contest/548/problem/A
题意:
给出一个字符串
给出一个k
问字符串能否拆成k个长度相同的回文串
首先 k>len 以及 len%k!=0 肯定都是不合法的
然后求出n=len/k,n个回文串,,直接从1开始判断是否每n个字符都是回文串即可。
#include <cstdio> #include <cmath> #include <cstring> #include <string> #include <algorithm> #include <iostream> #include <queue> #include <map> #include <set> #include <vector> using namespace std; char tm[1005]; int main() { int k; int i,j; int flag; scanf("%s",tm+1); int len=strlen(tm+1); scanf("%d",&k); if (k>len||len%k!=0) { printf("NO\n"); return 0; } int n=len/k; for (i=1;i<=len;i+=n) { int tmp[1005]; int tm2[1005]; for (j=1;j<=n;j++) { tmp[j]=tm[i-1+j]; tm2[n-j+1]=tmp[j]; } flag=0; for (j=1;j<=n;j++) if (tm2[j]!=tmp[j]) { flag=1;break; } if (flag) { printf("NO\n"); return 0; } } if (!flag) { printf("YES\n"); } return 0; }