hdu_1408 盐水的故事

来源:互联网 发布:最强淘宝系统小说下载 编辑:程序博客网 时间:2024/04/28 03:58

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1408


分析:先求出有多少滴水,再加上停滴的时间就好了。注意V,D可以是实数。


我的代码:

#include<stdio.h>#define Max 1000int a[Max+10];int main(){    double V,D;    int i;    for(i=0;i<=Max;i++) a[i]=0;    for(i=1;i<=Max;i++) a[i]=a[i-1]+i;  //算的第i次滴水后,一共滴了多少滴水。    while(~scanf("%lf%lf",&V,&D))    {        int time=0;        int d=V/D;        if(D*d<V) d++;  //加少最后一滴不满 D ml的水。        time=d;   //一共有d滴水。        for(i=1;i<=Max;i++)        {            if(d>a[i]) time++;   //加上停滴时间。            else break;        }        printf("%d\n",time);    }    return 0;}
总结:交了7次代码,WA了5次,超时一次,第一次超时就明白输入有实数了,最面一直WA,晕死了(╰_╯)#。

最后发现时求水滴的地方有错,之前一直是有一个for,枚举水滴的个数

for(d=1;d<1000l;d++){    if(d*D>=V) break;}time=d;//一共有d滴水。

不知道为什么当时会有这么奇葩的想法,这样去求水滴的个数╮(╯▽╰)╭,想想这方法肯定是错的,如果D小点水滴数超出循环上界是可以的(此处上界是1000)。。

原创粉丝点击