题解
2023-06-04 14:48:08
发布于:陕西
27阅读
0回复
0点赞
由题意知,金币数应按11+22+33+......+nn+(n+1)*(n+1)+......
所以我们可以将输入的n天依次减去1、2、3、4……并将金币加起来,直到n<=前一个天数时,将结果算出,具体思路请看代码
#include <stdio.h>
int main()
{
int d,i;
int sum=0;
scanf("%d",&d);
for(i=1;sum<d;i++)
{
sum+=i;
}
int i1=i-1;//得到了在第几个金币中
int i2=i1-1;//这前面获得的金币一定连续
int sum1=0;
for(int a=1;a<=i2;a++)
{
for(int b=1;b<=a;b++)
{
sum1+=a;
}
}
//得到了前一个金币的累加
int c=d-i2*(i2+1)/2;
for(int h=i2*(i2+1)/2;h<d;h++)//计算剩下天数得到的金币
{
sum1+=i1;
}
printf("%d",sum1);
return 0;
}
这里空空如也
有帮助,赞一个