2011-06-01 22:47:09Morris
d632. C and S ??
http://zerojudge.tw/ShowProblem?problemid=d632
內容 :
有一天,小明在網路上看到一種神奇的魔法
根據小明的推測,這種魔法似乎是一種數學布林函數
這個函數是長這樣的:
輸入部分:
A、B和C
輸出部分:
S 和 C'
S = A xor B xor C
C' = (A and B) or (B and C) or (C and A)
小明將好多個這種函數當成丸子般串起來
並且把兩個布林數列代進去
神奇的事情發生了...
當A為0010
B為0011
所得到的S數列竟然是0101!!!
//==================
小明今天想做實驗,看看代入不同的A和B,所得到的S數列是長什麼樣子
輸入說明
:
給定兩個數列A和B(AB兩者長度皆為32)
輸出說明
:
S數列
範例輸入 :
00000000000000000000000000001100 00000000000000000000000000001101
範例輸出 :
00000000000000000000000000001100 00000000000000000000000000001101 --------------------------------- 00000000000000000000000000011001 ****End of Data******************
提示
:
背景知識:
logic
FA.
FA.
*目前測資還很弱,以後將會變難
出處
:
/**********************************************************************************/
/* Problem: d632 "C and S ??" from xatier */
/* Language: C */
/* Result: AC (10ms, 270KB) on ZeroJudge */
/* Author: morris1028 at 2011-05-30 21:26:19 */
/**********************************************************************************/
#include<stdio.h>
main() {
char A[33], B[33];
while(scanf("%s %s", A, B) == 2) {
int a, b, S[33] = {};
printf("%s\n%s\n", A, B);
puts("---------------------------------");
for(a = 31; a >= 0; a--) {
S[a] += A[a] + B[a] - 2 * '0';
if(S[a] >= 2) S[a-1] += S[a]/2, S[a] %= 2;
}
for(a = 0; a <= 31; a++)
printf("%d", S[a]);
puts("");
puts("****End of Data******************");
}
return 0;
}