有没有大佬能帮忙卡卡常
  • 板块P10892 SDOI2024
  • 楼主zlqwq
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/1/1 17:44
  • 上次更新2025/1/1 17:46:50
查看原帖
有没有大佬能帮忙卡卡常
1198194
zlqwq楼主2025/1/1 17:44

rt,代码如下,只有 3030 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){
	//	cout<<n<<'\n';
		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;
}
2025/1/1 17:44
加载中...