2008年10月26日 星期日

Problem 10469 To Carry or not to Carry,進位或不進位

題目中所顯示的加法器,因為有錯誤,所以無法產生進位的動作。題目有兩個例子,一個是0100與0110的相加,結果為0010。另一個6+9=15的例子,是0110+1001=1111,所以綜合起來,這個加法器其實是個 XOR 的計算器。所以程式的輸出只要顯示 a^b 兩個數字 XOR 的結果,只不過題目提醒是要用 32 位元的 unsigned,因此宣告與讀取時,要使用 unsigned。
整個程式核心內容只有三行,不是開玩笑,真的就三行。C語言程式碼如下:
unsigned a, b;
while (scanf("%u%u", &a, &b)==2)
printf("%u\n", a ^ b);

p10469題目連結
回ACM題庫目錄
回首頁

沒有留言: