開啟章節選單
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"; } }