自古C题比B题简单。
构造题。
我们发现合并一个相同的字母组成的字符串,个数为n,它的代价是(n*(n-1))/2,也就是0+1+...+n-1。
所以我们每次取最大的n,使得k-n>=0,减一下,输出n个相同字符。
如果不够减,换不同字符,重复上述步骤。
#include<cstdio> int k; char c='a'; int tmp=0; int main(){ scanf("%d",&k); if(k==0) puts("a"); while(k){ while(k-tmp>=0) k-=tmp,putchar(c),tmp++; c++,tmp=0; } return 0; }