题意:n天总共得到多少金币,第一天得到一个,第二第三天得到分别得到两个,第三第四第五天分别得到三个以此类推
分析:
1 1
2 2 3
3 4 5 6
4 7 8 9 1 0
5 11 12 13 14 15*************************k(k+1)/2=n 求出的k就是最后一天的可得到的金币个数,
得到金币 天数 例如k=5只有当n=15时候k=5 其他小于5 所以
个数 向上取证
#include <stdio.h>
#include <math.h>
int main(int argc, char *argv[])
{
int n,i,sum,k;
while(scanf("%d",&n) && n)
{
sum=0;
k=ceil((-1+(double)sqrt((double)(1+8*n)))/2.0);
for (i=1;i<=k-1;i++)
{
sum=sum+i*i;
}//截至每天获得k-1个金币时候得到的金币总个数
sum=sum+(n-k*(k-1)/2)*k;//每天获得k个金币的总和值
printf("%d %d\n",n,sum);
}
return 0;
}