【論理演算メニュー】> STEP: 9 全加算器 (paizaランク C 相当) [難易度: 1505 ±17]
※リンク先へ移動するためには[paiza]へのログインが必要です。
京子ちゃんは 二進数 の整数同士で足し算をするプログラムを作成したいと思っています。
二進数の足し算において、下から 1 けた目の計算は半加算器でできることを知り、 2 けた目の計算も同じように足し算ができないかと考えています。
上記の画像のように、 現在下から 2, 3 けた目を計算しようとしています。そこで、入力 A, B と 1 けた目からの繰り上がり C1 が与えられます。 京子ちゃんに変わって C2 と S を計算し、出力してください。
この問題は少し難しいので、ヒントとなる画像を用意しました。 2 つの半加算器と XOR 演算を用いることで計算することができます。
入力値(例)
0 1 1
出力値(例)
1 0
解答例
1 2 3 4 5 6 7 8 |
<?php list($a, $b, $c1) = explode(" ", trim(fgets(STDIN))); $c2 = ($a & $b) | (($a ^ $b) & $c1); $s = (($a ^ $b) ^ $c1); echo $c2. " ". $s. "\n"; ?> |