http://acm.hdu.edu.cn/showproblem.php?pid=1049
题目大意:一只虫子一不小心掉进一个n英寸深洞中。它有足够的能量来爬你每分钟英寸,但随后必须休息一分钟之前再次攀升。在休息期间,它滑落d英寸。攀爬的过程和休息然后重复。多久前的虫子爬出好吗?我们会永远数每分钟作为一个整体的一部分,如果虫子只是达到顶端的最后的攀爬,我们将假设蠕虫让出来。
分析:可以分析,虫子最后一步爬出去一定是在上升阶段的,前面都是上升,下降循环进行。那我们先n-a,再去(n-a)%(u-d),判断是否可以整除。如果可以,说明不停循环的2分钟刚好可以在最后一步之前停止;如果不能,则先进行一个下降,再进行一个循环后才能出去。
#include<iostream>
using namespace std;
#include<cstring>
#include<cmath>
#include<algorithm>
int main()
{
int n,u,d;
while(cin>>n>>u>>d){
if(n==0&&u==0&&d==0) break;
int t=(n-u)%(u-d);
if(t!=0) t=(n-u)/(u-d)*2+3;
else t=(n-u)/(u-d)*2+1;
printf("%d\n",t);
}
return 0;
}