帮忙下 zoj上的题目2345 用C语言

来源:百度知道 编辑:UC知道 时间:2024/09/20 22:34:23
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2345
翻译成中文:国王赏给他的武士金币,第一天得到1块,接下来的2天(也就是第二第三天),每天得到2块金币;接下来的3天(第四天、第五天、第六天),每天得到3块金币;接下来的4天(第七、八、九、十天),每天得到4块金币。如此无限进行下去:接下来的N天里,每天得到N块金币,接下来的N+1天里,每天得到N+1块金币。你的任务是给定第几天,要求武士获得的金币的块数。

#include<stdio.h>
main()
{int i,j,l,m=0,sum=0;
printf("第几天:\n");
scanf("%d",&l);
for(i=1;m<l;i++)
for(j=1;j<=i&&m<l;j++)
{sum+=i;m++;}
printf("金币:%d\n",sum);
}
这个应该是最简单的,运行绝对正确!!!

哈哈,这是一个等差数列,
前n项和是==n(n+1)/2;
你给的天数必定(n-1)(n)/2<day<=n(n+1)/2之间
所以如下,很短
devcpp编译通过
#include<stdio.h>
int main()
{
int n,i;
printf("input the day:\n");
scanf("%d",&n);
i=1;
while(i*(i+1)/2<n)
{
i++;
}
printf("%d gold coin shuld give",i);
getch();
return(0);
}
that's all

其实不难:

第几天:365
武士得27个金币

#include <stdio.h>

int getcount(int iday)
{
int i,days=0;
for(i=1;;i++)
{
int j;
for(j=1;j<=i;j++)
if(--iday==0) return i;
}