Description
爬树,白天定义为早上十点到晚上十点,其他是夜里,白天爬a米,夜里掉b米,从一个下午的两点开始爬,几天后可以从高度为h1的地方爬到高度为h2的地方
Input
第一行两个整数h1,h2表示起点和终点的高度,第二行两个整数a和b表示白天爬上的距离和夜里掉下来的距离(1<=h1 < h2<=1e5,1<=a,b<=1e5)
Output
输出第几天可以爬到终点,如果永远都爬不到终点则输出-1
Sample Input
10 30
2 1
Sample Output
1
Solution
先爬八小时,能爬上就是0,爬不上而且a<=b那么永远都爬不到了,输出-1,否则一天天爬
Code
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<ctime>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
#define maxn 1111
int h1,h2,a,b;
int main()
{
while(~scanf("%d%d%d%d",&h1,&h2,&a,&b))
{
if(h1+8*a>=h2)printf("0\n");
else if(a<=b&&h1+8*a<h2)printf("-1\n");
else
{
int cnt=0;
h1+=8*a;
a*=12,b*=12;
while(1)
{
cnt++;
h1+=a-b;
if(h1>=h2)break;
}
printf("%d\n",cnt);
}
}
return 0;
}