报告错误
如果你发现该网页中存在错误/显示异常,可以从以下两种方式向我们报告错误,我们会尽快修复:
- 使用 CS Club 网站错误 为主题,附上错误截图或描述及网址后发送邮件到 286988023@qq.com
- 在我们的网站代码仓库中创建一个 issue 并在 issue 中描述问题 点击链接前往Github仓库
题目描述
有一个容器一开始含有A个青色的球
然后Takahashi可以做以下的操作
将B个青色的球和C个红色的球加进容器中
Takahashi的目标是实现一个青色的球的数量顶多是红色球的D倍
找出能不能实现这个目标,如果可以则找出最小的操作步数
否则输出-1
思路
根据题目可以列出以下式子(n为步数) \(A+nB\leq nDC\) 则可以推出以下的式子 \(n\ge \frac{A}{DC-B}\) 则当上式不成立时,则不可能实现
若上式子成立,则给n的最小值向上取整
复杂度,直接列式子O(1)
import java.util.*;
import java.io.*;
public class hydrate{
public static void main (String [] args){
Scanner in = new Scanner(System.in);
int a = in.nextInt();
int b = in.nextInt();
int c = in.nextInt();
int d = in.nextInt();
if(d*c-b==0) System.out.println("-1");
else{
double ans = 1.0*a/(d*c-b);
if(ans<0) System.out.println("-1");
else System.out.println((int)Math.ceil(ans));
}
}
}
记得一定要判断除数不为零,为零时也是不可实现