现在的位置: 首页 > 综合 > 正文

poj 2000 Gold Coins

2013年07月31日 ⁄ 综合 ⁄ 共 773字 ⁄ 字号 评论关闭

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

 

抱歉!评论已关闭.