题解:P10892 SDOI2024
观察发现分为两种情况:
- 是偶数,直接除以 。
- 是奇数,为了使纠结(猫猫有奇数只)的次数变少,则在 和 之间选出奇数猫猫只带走才能使剩下的猫猫有偶数只。
代码如上模拟,要开 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 2024-08-21 21:04 zhangzirui66 阅读(11) 评论(0) 收藏 举报 来源