寻找保持置位数的最小严格后继,可由位运算或搜索获得。
#include <bits/stdc++.h> using namespace std; int main(){unsigned long long n;while(cin>>n&&n){auto low=n&(~n+1);auto right=n+low;cout<<(right|(((right^n)>>2)/low))<<'\n';}}
注册一个 GeekPi OJ 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 GeekPi OJ 通用账户