来源:http://codeforces.com/contest/219/problem/A
题意:判断一个串能否重新构成一个含有k个相同的子串的串。
思路:奉献CF水题一枚,直接暴力即可。
代码:‘
#include <iostream>
#include <string>
#include <string.h>
#include <cstdio>
using namespace std;
#define CLR(arr,val) memset(arr,val,sizeof(arr))
int num[30];
int main(){
int n;
while(scanf("%d",&n) != EOF){
string ss;
CLR(num,0);
cin >> ss;
for(int i = 0; i < ss.size(); ++i){
int x = (int)(ss[i] - 'a' + 1);
num[x]++;
}
bool flag = true;
for(int i = 1; i <= 26; ++i){
if(num[i] && num[i] % n == 0){
flag = true;
}
else if(num[i] && num[i] % n != 0){
flag = false;
break;
}
}
if(!flag)
printf("-1\n");
else{
string newss;
for(int i = 1; i <= 26; ++i){
if(num[i]){
int k = num[i]/n;
for(int j = 0; j < k; ++j)
newss += char(i + 'a' - 1);
}
}
for(int i = 1; i <= n; ++i)
cout<< newss;
cout<<endl;
}
}
return 0;
}