開啟章節選單

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";
  }
}

練習題