Description
cjc因为背词组背得太努力,不留神得病了一秒5000赞,不得不去挂盐水的时侯,看着盐水一滴一滴,机智的他想,假如盐水滴上去很有规律,先是滴一滴,停一下;之后滴二滴,停一下;再滴三滴,停一下...一秒5000赞,现今有一个问题:这瓶盐水一共有VUL毫升,每一滴是D毫升,每一滴的速率是1秒(假定最后一滴不到D毫升,则耗费的时间也算1秒),停一下的时间也是1秒这瓶水哪些时侯能挂完呢?
Input

多组输入
每行输入两个整数代表VUL和D,其中0
Output
输出盐水挂完须要的时间。
代码区
#include
using namespace std;
int main()
{
int vul, d;
while (cin >> vul >> d)
{
int sum = 0; // 统计滴入了多少毫升的水
int i, j; // 题目中水是一波一波滴入的,我们先找到最后一波滴入的水,假设是i滴,再从i滴中找到当滴入j滴瓶空了
int times = 0;
for (i = 1;; i++)
{
sum += d * i;
if (sum >= vul) // 滴入i波水时发现空了,那么是在i波中第几滴时空的呢
{
break;
}
}
sum -= i * d;//把最后一波水先减掉,慢慢一滴一滴滴入
for (j = 1; j <= i; j++)
{
if (sum + (j - 1) * d < vul && sum + j * d >= vul)//发现滴入第j滴时大于等于vul,j-1滴时小于vul
break;
}
times += i - 1; //一共有i波
times += ((i - 1) / 2.0) * i + j;//一共有多少滴
cout << times << endl;
}
}