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<iostream>
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(VUL<D)
    {
        int temp=D;
        D=VUL;
        VUL=temp;
    }
    int time=fun(VUL,D);
    cout<<time<<endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值