题意: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; }