我想的是,把每一次运算的 x 都当作自己本身就是3的倍数。这样的话如果要除以3就必须加上3,抽象化这一个过程,也就是每次都让k减去3,单独开一个数,记录每一次多加了多少(因为把所有的数都当作离他最近比他小3的倍数来算了),最后单独遍历一下多算的部分,超时40pts,求大佬指教
#include<bits/stdc++.h>
using namespace std;
long long x, k;
int main() {
ios::sync_with_stdio(0);
cin >> x >> k;
long long ano = 0;
while(k-3>0) {
k=k-3;
ano+=x%3;
x=x/3+1;
}
ano+=k;
for(int i = 1; i<=ano; i++){
x++;
if(x%3==0){
x/=3;
}
}
cout << x;
return 0;
}