题解 | #[NOIP2015]金币#
[NOIP2015]金币
https://www.nowcoder.com/practice/8f71f5670e6a45118d24d13868a2da9e
#include <stdio.h>
int main() {
int k;
//接收用户输入的天数
scanf("%d",&k);
//定义个变量统计最终的金币
int sub =0;
//因为 第一天收到一个, 第二天第三天收到两个。。。以此类推
/*
天数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
金币数 1 2 3 4 5 6
每增加一个金币,就会收到金币相应的天数,根据 n*(n+1)/2 n为金币数 公式结果为最后的天数
*/
//由此可定义一个 金币的变量j为1
int j =1;
//然后循环天数从1开始到k天结束
for(int i = 1;i<=k;i++)
{
//进来要先接收金币
sub+=j;
//如果天数到了n*(n+1)/2的最后那个天数时 金币数+1,继续循环金币数j的天数
if(i==j*(j+1)/2)
{
j++;
}
}
printf("%d",sub);
return 0;
}