https://ac.nowcoder.com/acm/contest/327/C
数论内容:梅氏砝码问题
假设第i个砝码的重量为a[i]且a[i]>=a[i-1]。i-1个砝码可以表示[1,n](n<=a[1]+a[2]+a[3]+...+a[i-1]),那么新增砝码i后,可以表示的范围为[1,n]U[a[i]-n,a[i]+n]。为使其连续,所以a[i]-n<=n+1时,即a[i]<=2*n+1<=2*(a[1]+a[2]+a[3]+...+a[i-1])+1。因此当a[i]=2*(a[1]+a[2]+a[3]+...+a[i-1])+1时候可以获得最优解(i个砝码可以表示范围[1,a[1]+a[2]+a[3]+...+a[i])。
所以
a[0]=0
a[1]=2*(a[0])+1=1
a[2]=2*(a[0]+a[1])+1=3
a[3]=2*(a[0]+a[1]+a[2])+1=9
a[4]=2*(a[0]+a[1]+a[2]+a[3])+1=27
......
此时a[0]+a[1]+a[2]+a[3]+a[4]=40
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<string>
#include<queue>
#include<vector>
#define pi 3.1415926
#define inf 0x3f3f3f3f
using namespace std;
const long long mod = 1e9 + 7;
#define ll long long
#define MAXN 1000005
/*struct node {
int a, b;
}t[MAXN];
bool cmp(node x, node y) {
return x.b < y.b;
}*/
int main() {
long double n, sum = 1, cnt = 1;
cin >> n;
long long ans = 1;
while (sum < n) {
cnt *= 3;
sum += cnt;
++ans;
}
cout << ans << endl;
return 0;
}