题目:你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意 小于等于 N 的正整数重量。
那么这套砝码最少需要包含多少个砝码?
注意砝码可以放在天平两边。
输入格式
输入包含一个正整数 N。
输出格式
输出一个整数代表答案。
样例输入
7
样例输出
3
解题思路
该题目问小于n的重量,那么就得问不同的砝码数量最多能称多少重量,然后推算出数学公式来求解。
称1 需要1个砝码 砝码重量1
称2 需要2个砝码 砝码重量1,2
称3 需要2个砝码 砝码重量1,3
称4 需要2个砝码 砝码重量1,4
称5 需要3个砝码 砝码重量1,2,3
称6 需要2个砝码 砝码重量1,2,4
称7 需要2个砝码 砝码重量1,3,4
称8 需要2个砝码 砝码重量1,5,7
称9 需要2个砝码 砝码重量1,3,8
称10 需要2个砝码 砝码重量1,3,8
称11需要2个砝码 砝码重量1,3,8
称12 需要2个砝码 砝码重量1,3,8
称13 需要2个砝码 砝码重量1,3,9
一个砝码最多称1
2个砝码最多称到4
3个砝码最多称到13
可以推出公式
n个砝码最多称到重量=n-1个砝码最多称到重量*3+1
//java代码
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n = sc.nextInt();
int sum=0;
for (int i =1; i >0; i++) {
sum=sum*3+1;
if (n<=sum) {
System.out.println(i);
break;
}
}
}
}