D. Min Cost String
题目大意:
题目大意:
输出最小花费的字符串。
字符串长度为n,只能用k个字母。
解法:
经过之前对思维题的学习,觉得构造题看样例还是非常重要的!
于是看样例一,发现其实正解就藏在其中。
当为k*k的时候,最好保证每个元素就出现k次。
于是循环节如下:
aabacadbbcbd…
代码:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e5 + 9;
int main() {
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int n, k;
cin >> n >> k;
string str = "";
if (k == 1) {
for (int i = 0; i < n; i++)
cout << 'a';
cout << endl;
} else {
string ans;
for (int i = 0; i < k; i++) {
ans+=char(i+'a');
for (int j = i+1; j < k; j++) {
ans+=char(i+'a');
ans+=char(j+'a');
}
}
for(int i=0;i<n;i++)
cout<<ans[i%(k*k)];
cout<<endl;
}
}