在一个无限长的数轴上,某一处坐标上面有一个宝物。
小红想拿到这个宝物,她会从原点出发,她每天先向右走的长度,然后再向左走的长度,然后第二天再继续右走。
如果小红在移动的过程中路过这个宝物,小红就能捡起这个宝物。
小红想知道,自己最快能在哪一天拿到这个宝物?
输入描述:
三个整数,依次表示宝物的坐标K,小红每天向右走的长度a,每天向左走的长度b。
输出描述:
如果小红永远拿不到宝物,则输出 -1。 否则输出小红最快拿到宝物的天数。
示例1
输入
复制2 1 1
2 1 1
输出
复制-1
-1
说明
每天向右走 1 ,再向左走 1 ,永远走不到 2
示例2
输入
复制2 2 1
2 2 1
输出
复制1
1
说明
第一天向右走 2 ,直接就拿到宝物了。
示例3
输入
复制3 2 1
3 2 1
输出
复制2
2
说明
小红第一天向右走到坐标2,然后再向左走到坐标1,第二天向右直接来到坐标3拿到宝物。 分两种情况考虑,k<0,k>0;再在这两种情况中,分情况考虑a和b的关系,就可以了;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int k = sc.nextInt();
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(getB(k, a, b));
}
private static int getB(int k,int a,int b) {
boolean flag = true;
int sum = 0;
int count = 0;
if (k>0){
if (a==b||a<b){
return -1;
}else if (a>=k){
return 1;
}
while (flag){
sum = sum+a-b;
count++;
if (sum+a<k){
}else{
count++;
flag=false;
}
}
return count;
}
if(k<0){
if (a==b||a>b){
return -1;
}else if (b-a>=-k){
return 1;
}
while (flag){
sum =sum+b-a;
count++;
if (sum<-k){
}else {
flag = false;
}
}
return count;
}
return 0;
}
}