题意:
给你一个整数K,求出一个字符集,这个字符集经过最优的合并后,合并的花费恰好等于K。
思路:
样例给的答案让我以为这题很复杂,,但发现一个长度为n的只有一种字符的字符集,最优合并后的花费为n*(n-1)/2,,所以只要找出不同的字符集的(不同的字符集,合并时不需要花费),使得他们的和为k就行了。
代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int k;
scanf("%d",&k);
if(k==0)
{
cout<<"o";
return 0;
}
string ans = "";
int sum = 0;
for(int i = 'a';i<='z';i++)
{
if(sum==k)
break;
else
{
int num = 1;
ans+=i;
while(sum+num<=k)
{
ans += i;
sum += num;
num++;
}
}
}
cout<<ans;
return 0;
}