java 假币问题_假币问题-题解(Java代码)
**題目描述**
居然有假幣!!!
事情是這樣的,現在豬肉漲了,但是農民的工資卻不見漲啊,沒錢怎么買豬肉啊。老王這就去買豬肉,結果找來的零錢中有假幣!!!可惜老王一不小心把它混進了一堆真幣里面去了。現在知道假幣的重量比真幣的質量要輕。給你一個天平,請用最快的時間把那個可惡的假幣找出來。
**輸入**
輸入有多行,每一行的值為硬幣的數目n,1≤n≤2^30,輸入0結束程序
**輸出**
最少要稱多少次一定能把那個假幣找出來。輸出對應輸入行數.
**樣例輸入**
3
12
0
**樣例輸出**
1
3
**代碼塊**
```java
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
while (true) {
if (n == 0) {
break;
}
int count = 0;
while (n != 1) {
// 把假幣分成3堆
if (n % 3 == 0) {
n = n / 3;//如果能被3整除,正好分成3堆
count++;
} else {
n = n / 3 + 1;//若不能被3整除,保證A,B兩堆的硬幣數要比C堆的硬幣數要大
count++;
}
}
System.out.println(count);
n = in.nextInt();
}
}
}
```
**解題思路**
1.把硬幣分成三堆(盡量保證AB兩組的數量大于C組)
2.AB兩組如果一樣重, 則假幣在C組,C組重復操作1; AB如果不一樣重, 選重量輕的一組, 重復操作1.
3.直到分成的三堆變成 1, 1, 1 或者直接變成1, 1 -> 稱重一次即可
0.0分
2 人評分
總結
以上是生活随笔為你收集整理的java 假币问题_假币问题-题解(Java代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一种很强的对联,看了让我想起高中时期那会
- 下一篇: missing privilege se