Time Limit:1000MS Memory Limit:65536K
Total Submit:96 Accepted:20
Description
挂盐水的时候,如果滴起来有规律,先是滴一滴,停一下;然后滴二滴,停一下;再滴三滴,停一下...,现在有一个问题:这瓶盐水一共有VUL毫升,每一滴是D毫升,每一滴的速度是一秒(假设最后一滴不到D毫升,则花费的时间也算一秒),停一下的时间也是一秒这瓶水什么时候能挂完呢?
Input
输入数据包含多个测试实例,每个实例占一行,由VUL和D组成,其中 0 < D < VUL < 5000。
Output
对于每组测试数据,请输出挂完盐水需要的时间,每个实例的输出占一行。
Sample Input
10 1
Sample Output
13
题目 连接 :http://acm.hdu.edu.cn/showproblem.php?pid=1408
我的代码 ,不知道哪里错了。大家帮忙看下
#include <stdio.h>
main()
{
int i ,v , v1,d ,t;
while(scanf("%d%d",&v,&d)!=EOF)
{
v1=0;t=0;
for(i=1; ;i++)
{
v1+=d*i;
t+=i;
if(v1>=v)
{
t=t-(v1-v)/d;
break;
}
}
printf("%d\n",t+i-1);
}
}
----------------解决方案--------------------------------------------------------
大家帮帮忙拉!~
----------------解决方案--------------------------------------------------------
“输入数据包含多个测试实例”
那输入终止的条件是什么呀??
----------------解决方案--------------------------------------------------------
如果v小于d就应该是1.
个人觉得应该从这个方面考虑:
time=v+停的时间,
这样只需考虑停的时间了。
----------------解决方案--------------------------------------------------------
题目中说了,V > D 的啊!~
----------------解决方案--------------------------------------------------------
噢,看错了。
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <conio.h>
int main(void)
{
int vul,d,vul_Mid;
int gapTimes;
int dropV;
scanf("%d,%d",&vul,&d);
gapTimes=0;
dropV=1;
vul_Mid=vul;
while(vul_Mid>0)
{
vul_Mid-=dropV++;
gapTimes++;
}
printf("%d\n",gapTimes+vul-1);
getch();
return 0;
}
框架自己写一下
----------------解决方案--------------------------------------------------------
设总共n次滴完,得出公式 若d整除v,,则 t=(n-1)+v/d,否则 t=(n-1)+v/d+1;
#include<stdio.h>
void main()
{
int n=1,v1=0,v,d,t;
printf("输入v和d的值:\n");
scanf("%d %d",&v,&d);
while(v1<v)
{
v1+=n*d;
n++;
}
if(v%d==0) t=(n-2)+v/d;//这里变成了n-2是因为上面循环结束后,n比实际次数多一
else t=(n-2)+v/d+1;
printf("总共需要%d秒。\n",t);
}
[此贴子已经被作者于2007-8-14 9:00:58编辑过]
----------------解决方案--------------------------------------------------------