2014年7月2日 星期三

uva 10931 Parity

用短除法把數字轉成二進位,轉的過程中,紀錄出現 1 的個數。

二進位轉道字串陣列後,要倒著輸出,因為是相反方向。

#include <stdio.h>
#include <stdlib.h>

int main(void){
    int num,counter,top,i;
    char buf[100]={0};

    while(scanf("%d",&num)!=EOF){
        if(num==0) break;

        counter=0; top=-1;
        while(num>=1){
            if(num%2==1) ++counter;

            buf[++top]=num%2 + '0';

            num/=2;
        }

        printf("The parity of ",counter);
        for(i=top;i>=0;i--) printf("%c",buf[i]);
        printf(" is %d (mod 2).\n",counter);
    }

    return 0;
}

沒有留言:

張貼留言