Java算法题

题目描述

给定数字A,B (A

输入描述

第一行数据组数T,对于每组数据,一行四个整数A,B,p,q。
1 <= A,p,B <= 10^9,2 <= q <= 10,1<= T <=5.

输出描述

对于每组数据,输出一个数字表示答案

Java算法题_第1张图片

解题思路

分析题目,如果走 A=A+p 这边,A增加只要一步;如果走p=pq这边,A在这步并不增加,A增加最少还需多加一步。所以先判断走 A=A+p 能否使 A >= B,如果可以就直接走这边结束;如果不行再判断连走哪边两部使A增加更多,即 p2 和 pq ,由于题目已经限制了q是一定大于等于2的,所以我们直接不用考虑这个问题。如果走 A=A+p 不能使 A >= B 那么就走 p=pq 这边。

代码如下

import java.util.Scanner;

/*
 * 给定数字A,B (A= B) {
				A = A + p;
			} else {
				p = p * q;
			}
			count++;
		}
		System.out.println(count);
	}
}

输入

2
1 5 7 2
3 5 1 2

输出

1
2

Java算法题_第2张图片
注意: 这里 p*q 有可能会超出 int 范围,所以使用 long 型.

你可能感兴趣的:(Java算法题)