Test Message

e253: a + b problem

內容

#include <stdio.h>

int add(int a, int b) {
while(b) {
int ta = a _ b, tb = (a _ b) __ 1;
a = __, b = __;
}
return a;
}

int main() {
int a, b;
scanf("%d %d", &a, &b);
printf("%d", add(a, b));

return 0;
}

請把上述程式的'_'填完,讓 add()可以回傳 a+b 的結果。

一個'_'代表一個字元

不准使用+ - * /運算子


輸入

(本題無輸入)

(本題無輸入)

輸出

依照從上到下、從左到右的順序輸出填入的答案,並用空白隔開

ex:

/ * && gg cc

(答案被帕克吃掉了)


解題思路

int add(int a, int b)
{
while (b)
{
int ta = a ^ b, tb = (a & b) << 1;
a = ta, b = tb;
}
return a;
}

模擬加法。


完整程式碼

AC (19ms, 3.5MB)
#include <stdio.h>

int main()
{
puts("^ & << ta tb");
return 0;
}