题目描述:
互联网时代,该如何保证数据的安全性呢?这是一个大问题!!! 给数据加密,那就需要密钥对不对!! 现在呢,肖老师给你一个n和k,你需要帮肖老师计算出这个密钥。这个密钥需要满足以下条件: 1、这个密钥是只由小写字母组成的字符串 2、这个密钥长度的为n 3、这个密钥中不同字母的个数为k 4、这个密钥相邻字母不相同 5、这个密钥为所有满足条件的字符串中字典序最小。
输入格式
输入一行包含两个正整数n(2≤n≤1000)和k(2≤k≤26)。
输出格式
输出密钥字符串。
样例输入
样例
1
3 3
样例
2
4 2
样例输出
样例1
输出
abc
样例2输出
abab
思路:
这题要求密钥的字典序最小,所以说, 我们要优先使用“a”,“b”这样的ASCLL值小的字符组成。而且,还要求相同字符不相邻,至少有k种字符,那么,我们可以得出,在前n-k个字符中,我们可以用循环的"ababab……”填充,后面则按顺序填充,这样就得出最佳密钥了。
代码:
#include <bits/stdc++.h> using namespace std; int main() { int n,k; cin>>n>>k; if(n==k) { for(int i=0;i<n;i++) cout<<char(i+'a'); } else { for(int i=1;i+k-2<=n;i++) { cout<<char((i-1)%2+'a'); } for(int i=1;i<=k-2;i++) cout<<char(i+'b'); } }