pku 2453 超级位运算

#include <iostream> using namespace std; int main() { int n, x; while(scanf("%d", &n) && n) { x = n&-n; // 后面0的个数m的2^m printf("%d/n", n+x + (n^(n+x))/x/4); // n+x 将从右往左第一个01变成10 // (n^(n+x))/x/4 将剩下(除了变化的那两位,故除4)的1移位 } return 0; }

你可能感兴趣的:(include)