参考思路 https://blog.csdn.net/songchuwang1868/article/details/86535150
#include<bits/stdc++.h>
using namespace std;
int arr[22];
int main(){
arr[0]=1;//arr[0]=3^0;
for(int i=1;i<=19;i++){
int t=1;int x=i;
while(x--){
t*=3;
}
arr[i]=arr[i-1]+t;
}//算出arr[1]~arr[19],arr[1]=3^0+3^1,arr[2]=3^0+3^1+3^2,...
int n;
cin>>n;
if(n==1){
cout<<1;
return 0;
}
for(int i=0;i<19;i++){
if(arr[i]<n&&n<=arr[i+1]){
cout<<i+2<<endl;
return 0;
}
}
}
前面的都懂,但不是很明白
cout<<i+2<<endl;
最后输出的时候为什么要+2呢前面的都懂,但不是很明白
cout<<i+2<<endl;
最后输出的时候为什么要+2呢orz,orz太6了