Codeforces Round #135 (Div. 2)-A. k-String_html/css_WEB-ITnose

php中文网
发布: 2016-06-24 11:55:03
原创
1043人浏览过

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 "-1" (without quotes).

Sample test(s)

input

2aazz
登录后复制

output

azaz
登录后复制

input

3abcabcabz
登录后复制

output

-1
登录后复制


div+css3阶梯分页样式
div+css3阶梯分页样式

div+css3阶梯分页样式

div+css3阶梯分页样式 84
查看详情 div+css3阶梯分页样式




解题思路:给一个串,问是否能由k个相同的串连接而成。

用STL里的map。扫一遍,分别记录每个字符的个数,在判断所有的字符是否是k的倍数,若不是,则输出-1;否则,遍历依次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 0x7fffffffmap<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("-1\n");        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("\n");        }    }    return 0;}
登录后复制


HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号