题目描述
给定两个整数 n 和 k,请你构造一个长度为 n 的字符串 s。
字符串 s 需满足:
s 由前 k 个小写字母构成,且前 k 个小写字母均在 s 中出现至少一次。
前 k 个小写字母中,出现次数最少的字母的出现的次数尽可能多。
输出任意满足条件的字符串 s。
样例
输入样例:
3
7 3
4 4
6 2
输出样例:
cbcacab
abcd
baabab
算法1
自己理解的是:①首先n一定大于等于k,让前k个字母按顺序输出n/k 次。(保证了每个字母出现次数相同)
②剩下的n%k个,则在按字母顺序从前往后输出n%k个即可。(①保证了每个字母出现次数相同,则剩余的n%k个,输出前k个字母的任何n%k个均可)
如10 4–》 abcdabcdab
C++ 代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
char c='a';
int main()
{
int t;
scanf("%d",&t);
while (t-- ){
int n,k;
scanf("%d%d", &n,&k);
int a=n/k;
int b=n%k;
for(int i=0;i<a;i++){//输出a次前k个字母
for(int j=0;j<k;j++)
printf("%c",c+j);
}
for (int i = 0; i < b; i ++ ){//剩余的n%k个
printf("%c",c+i);
}
puts("");
}
return 0;
}