第一个样例过了,不知道是不是瞎猫碰到死耗子
//C++
#include<bits/stdc++.h>
using namespace std;
int n,l,r,mid,ans,g,n2,sum;
int num(int y){//吃多少
n2+=y/3;//吃多少
if(n2>=n){
return true;//超过或=需求,返回真
}
}
int check(int x){//木棒数
if(g<3) return num(sum);//临界条件
g=x/3+x%3;//每一次换的
sum+=x/3+x%3;//所有的木棍总数
check(g/3);//递归
}
int main(){
cin>>n;
if(n==1||n==2||n==3){//不需要占便宜
cout<<n;
}else{//需要占便宜
l=4;r=n;//左右点赋值
while(l<r){
mid=l+r>>1;//中间点
n2+=mid;//先加上初始的
if(num(mid)==true){//如果能吃够
r=mid;//再往小找找
ans=mid;//先存下答案
}else{
l=mid;//不行就往大找找
}
}
}
cout<<ans;//输出答案
return 0;
}