首先把 21、22、...、231 找一個陣列來擺放, C 語言程式碼如下:
unsigned int binary[31], total;
void create()
{
int i, j = 1;
for (i = 0, j = 2; i < 31; i ++, j *= 2)
binary[i] = j;
}
再將所輸入的 n 值依序除下來,記錄 1 出現的次數後一起印出即可:
int isPut = 0;
count = 0;
printf("The parity of ");
for (i = 30; i >= 0; i --)
{
if (isPut || n / binary[i] == 1)
printf("%d", n / binary[i]), isPut = 1;
if (n / binary[i] == 1) count ++ ;
n %= binary[i];
}
if (isPut) printf("%d", n);
if (n == 1) count ++;
printf(" is %d (mod 2).\n", count);
By David.K
p10931題目連結
回ACM題庫目錄
回首頁
沒有留言:
張貼留言