https://www.acwing.com/problem/content/description/3427/
代码及注释
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n;
int main()
{
int cnt , now , maxv;
cnt = 1 , now = 1, maxv = 1;
cin >> n;
// 1 个砝码所能表示的最大重量是 1 不能表示的最小重量九十 2
// 1 + 2 = 3
// 选 1
// 2 个砝码所能表示的最大重量是 4
// 选 1 3
// 三个砝码所能表示的最大重量是 = 两个砝码表示不出来的重量 5 + 能表示出来的重量的最大值 4 = 9
// 选 1 3 9
// 四个就是 14 + 13 = 27
// 同理可得........
// 那么怎么做呢 就是 int 三个变量
// 存储 能表示的最大重量 和 不能表示出的最小重量 和 几个砝码 当可以表示出的数 >= n 的时候就可以输出了
while(1)
{
if(maxv >= n)
{
cout << cnt << endl;
break;
}
now *= 3;
maxv += now;
cnt ++;
}
return 0;
}