close

題目連結:   https://onlinejudge.org/external/119/11933.pdf

題目大意:  給一個數字,從最低位開始,將奇數位的1給a,偶數位的1給b。

思路:  O(1),照題目要求進行。利用位元運算。n & (1<<i) 表示 n 與 2的i次方 做 &運算

代碼:  

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n;
    while(cin >> n, n){
        int a = 0, b = 0;
        bool dir = 0;
        for(int i = 0; i <= 30; ++i){
            if(n & (1<<i)){
                if(!dir) a|= (1<<i);
                else b|= (1<<i);
                dir ^= 1;
            }
        }

        cout << a << " " << b << endl;
    }
}

arrow
arrow

    尾玉 發表在 痞客邦 留言(0) 人氣()