10931 Parity

題目連結

題目敘述

我們將一個整數 n 的奇偶性 (parity) 定義為其二進位表示中所有位元之和對 mod 2 的結果。例如,數字 21 的二進位為 10101,其中有三個 1,因此它的奇偶性是 3 (mod 2),也就是 1。

在這個問題中,你需要計算一個整數的奇偶性,條件為: 1 ≤ I ≤ 2147483647

輸入格式

每一行輸入一個整數 I,當 I = 0 時,表示輸入結束,該行不應處理。

輸出格式

對於每個輸入的整數 I,請輸出一行: The parity of B is P (mod 2).

解題思路

I 不斷除以 2 (取商繼續除)直到商為 0 並將每次餘數字元往前加入 , 若餘數為 1 代表有一位數為 1 。

程式碼

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

int main() {
   int I;
   while(cin >> I && I) {
       int p = 0;
       string b = "";
       while(I > 0) {
           if (I % 2 == 0) {
               b = "0" + b;
           } else {
               b = "1" + b;
               p++;
           }
           I /= 2;
       }
       cout << "The parity of " << b << " is " << p << " (mod 2).\n";
   }
}

練習題