rt,代码如下,只有 30 pts,最后有几个点 TLE 了。
#include<iostream>
#define ll long long
using namespace std;
ll T;
void solve(){
ll n;
cin>>n;
ll ans=0;
while(n!=1){
if(n%2==1){
ll m=n+1,cnt1=0,cnt2=0;
while(m%2==0&&m){
m/=2;
cnt1++;
}
m=n-1;
while(m%2==0&&m){
m/=2;
cnt2++;
}
if(cnt1>cnt2){
n=n+1;
}
if(cnt2>cnt1){
n=n-1;
}
ans++;
}
n/=2;
}
cout<<ans+1<<'\n';
}
int main(){
cin>>T;
while(T--){
solve();
}
return 0;
}