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;
}
。。