题解:P10892 SDOI2024

观察发现分为两种情况:

  • nn 是偶数,直接除以 22
  • nn 是奇数,为了使纠结(猫猫有奇数只)的次数变少,则在 n+12\frac{n+1}{2}n12\frac{n-1}{2} 之间选出奇数猫猫只带走才能使剩下的猫猫有偶数只。

代码如上模拟,要开 long long

#include<bits/stdc++.h>
using namespace std;
long long t, n;
int main(){
	cin >> t;
	while(t --){
		long long ans = 0;
		cin >> n;
		while(n){
			if(n & 1){//有奇数只猫猫
				ans ++;
				if((n + 1) / 2 & 1) n = n - (n + 1) / 2;
				else n = n - (n - 1) / 2;
			}
			else n = n / 2;
		}
		cout << ans << "\n";
	}
	return 0;
}

posted on   zhangzirui66  阅读(3)  评论(0编辑  收藏  举报  

相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示