您的位置:首页 > 其它

CodeForces - 848A From Y to Y(构造)

2017-09-04 20:54 302 查看

From Y to Y

题目链接:From Y to Y

题意:

对于字符串s和字符c,f(s,c)表示c在s中出现的次数,若将c合并到s中,则花费f(s,c)。要求一个字符串,使得合并后的最小花费恰好等于k

思路:

可以发现,对于只有一个字符的字符串s,若它的长度为n,则花费为0+1+2+…+n-1

因此我们依次添加不同的字符凑到k即可

代码:

#include<stdio.h>

int main()
{
int k;
scanf("%d",&k);
if(!k)
{
puts("a");
return 0;
}
for(int i=0;i<26;++i)
{
int x=1;
while(k>=(x*(x-1)/2))
++x;
k-=(x-2)*(x-1)/2;
for(int j=1;j<x;++j)
printf("%c",'a'+i);
if(!k)
return 0;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: