1214 盐水的故事

Description

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

输入数据占一行,由VUL和D组成,其中0< D< VUL< 5000。
Output

请输出挂完盐水需要的时间。
Sample Input
10 1
Sample Output
13

题解:这是一道简单的从一加到N的问题,但是中间有个间隔,并且会有一个非整数然后
取整的那么一个过程,1+2+3+~~+N=(N+1)*N/2,所以题目中的推导出来的
公式应该是2*S=N*N+3*N.

#include
using namespace std;
int fun(int VUL,int D)
{
    int i=0;
    int s=0;
    if((VUL*1000)/D-(VUL/D)*1000!=0)//重点:这里的那个精度一定要取大一点,1000或者一万都行,开始我就是取成了10一直过不了
    {
        s=VUL/D+1;
    }
    else
        s=VUL/D;
    while(i*i+i<2*s)
    {
        i++;
    }
    return s+i-1;
}
int main()
{
    int VUL,D;
    cin>>VUL>>D;
    if(VULint temp=D;
        D=VUL;
        VUL=temp;
    }
    int time=fun(VUL,D);
    cout<return 0;
}

你可能感兴趣的:(1214 盐水的故事)