一道C语言的题目,我找不出毛病,但交上去就是WA

来源:百度知道 编辑:UC知道 时间:2024/06/23 08:51:49
Description

挂盐水的时候,如果滴起来有规律,先是滴一滴,停一下;然后滴二滴,停一下;再滴三滴,停一下...,现在有一个问题:这瓶盐水一共有VUL毫升,每一滴是D毫升,每一滴的速度是一秒(假设最后一滴不到D毫升,则花费的时间也算一秒),停一下的时间也是一秒这瓶水什么时候能挂完呢?

Input

输入数据包含多个测试实例,每个实例占一行,由VUL和D组成,其中 0 < D < VUL < 5000。

Output

对于每组测试数据,请输出挂完盐水需要的时间,每个实例的输出占一行。

Sample Input

10 1

Sample Output

13

Source

hdu1408

我的代码:
#include<stdio.h>
int main()
{
double vul,d;
int i,t;
while(scanf("%lf%lf",&vul,&d)!=EOF)
{
t=-1;
i=1;
while(vul>0)
{
t++;
if(vul<i*d)
{
while(vul>d)
{
vul-=d;

#include <stdio.h>
int main()
{
double VUL,D;
int d,j;
while(scanf("%lf %lf",&VUL,&D)==2)
{
d=VUL/D; //算出完整水滴的数目
if(d<VUL/D) d++; //如果最后一滴不足一滴,做修正.
for(j=1;VUL>0;j++) VUL -= j*D; //算出停的次数,其中滴了j-1次,就是停了j-2次.
printf("%d\n",j-2+d); //所用时间为停止次数(j-2)加上水滴数目d.
}
return 0;
}

好像是没错啊,要不把vul,d换成整型试试?

程序本身没有错误。但是不符合题目的输入输出要求。题目要求先把各组的val和d输进去,再把所有的结果输出来;你的是输入一组val和d,输出结果,然后再输入一组。系统按照题目要求输入多组数据时在你的程序下自然就发生了运行时错误了。
你用当把输入和输出改一下。这种题目考虑一下用动态数组试试。

如果第一次就滴完的话,按照你的程序:t=2,实际应该是t=1
所以改为:
#include<stdio.h>
int main()
{
double vul,d;
int i,t;
while(scanf("%lf%lf",&vul,&d)!=EOF)
{
t=-1;
i=1;
if(i==1&&vul==d)
printf("%d\n",t);
while(vul>0)
{