国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 互联网 > Codeforces Round #135 (Div. 2)---A. k-String

Codeforces Round #135 (Div. 2)---A. k-String

来源:程序员人生   发布时间:2014-11-15 03:46:59 阅读次数:3303次

k-String
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

A string is called a k-string if it can be represented as k concatenated copies of some string. For example, the string "aabaabaabaab" is at the same time a 1-string, a 2-string and a 4-string, but it is not a 3-string, a 5-string, or a 6-string and so on. Obviously any string is a 1-string.

You are given a string s, consisting of lowercase English letters and a positive integer k. Your task is to reorder the letters in the string sin such a way that the resulting string is a k-string.

Input

The first input line contains integer k (1?≤?k?≤?1000). The second line contains s, all characters in s are lowercase English letters. The string length s satisfies the inequality 1?≤?|s|?≤?1000, where |s| is the length of string s.

Output

Rearrange the letters in string s in such a way that the result is a k-string. Print the result on a single output line. If there are multiple solutions, print any of them.

If the solution doesn't exist, print "" (without quotes).

Sample test(s)
input
2 aazz
output
azaz
input
3 abcabcabz
output





解题思路:给1个串,问是不是能由k个相同的串联接而成。

用STL里的map。扫1遍,分别记录每一个字符的个数,在判断所有的字符是不是是k的倍数,若不是,则输出⑴;否则,遍历顺次map,每一个字符输出(总个数)/k个,然后重复k次便可。





AC代码:

#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include <vector> #include <queue> #include <set> #include <map> #include <string> #include <math.h> #include <stdlib.h> #include <time.h> using namespace std; #define INF 0x7fffffff map<char, int> m; int main() { #ifdef sxk freopen("in.txt","r",stdin); #endif int n; string s; while(scanf("%d",&n)!=EOF) { cin>>s; int len = s.size(); for(int i=0; i<len; i++) m[s[i]] ++; map<char, int>::iterator it; int flag = 1; for(it=m.begin(); it!=m.end(); it++){ if(it->second % n){ flag = 0; break; } } if(!flag) printf("⑴ "); else{ for(int j=0; j<n; j++){ for(it=m.begin(); it!=m.end(); it++){ for(int i=1; i<=it->second/n; i++) printf("%c", it->first); } } printf(" "); } } return 0; }


生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生