2011-05-29 22:29:35Morris

a132. 10931 - Parity

http://zerojudge.tw/ShowProblem?problemid=a132

內容 :

整數 n 的「同位元」定義為:其二進位表示法中每位元的和再除以 2 的餘數。例如:21 = 101012 的二進位有三個 1,因此它的同位元為 3 (mod 2),或 1

在此,你要計算一個整數 1 ≤ I ≤ 2147483647 的同位元。

輸入說明 :

輸入的每一行有一個整數 I,而 I = 0 表示輸入結束,該行無需處理。

輸出說明 :

對於輸入中的每個整 I,你要印一行 The parity of B is P (mod 2).,其中 B 是 I 的二進位表示法。

範例輸入 :


1
2
10
21
0

範例輸出 :

The parity of 1 is 1 (mod 2).
The parity of 10 is 1 (mod 2).
The parity of 1010 is 2 (mod 2).
The parity of 10101 is 3 (mod 2).

提示 :

出處 :

UVa ACM 10931 (管理:snail)

/**********************************************************************************/
/*  Problem: a132 "10931 - Parity" from UVa ACM 10931                             */
/*  Language: C                                                                   */
/*  Result: AC (6ms, 276KB) on ZeroJudge                                          */
/*  Author: morris1028 at 2011-05-29 18:20:40                                     */
/**********************************************************************************/


#include<stdio.h>
int t, N;
int D(int N) {
    if(N) {
        D(N/2);
        printf("%d",N&1), t += N&1;
    }
}
main() {
    while(scanf("%d", &N) == 1 && N) {
        printf("The parity of ");
        t = 0, D(N);
        printf(" is %d (mod 2).\n", t);
    }
    return 0;
}
11 2012-03-14 19:45:50

& N&1 這是什麼語法0.0

版主回應
AND運算, 用 bit 檢查, 是否最後一個 bit 為 1 2012-03-14 20:10:18