BOJ|10952号

4342 ワード


Pythonプール

import sys

while True:
    a, b = map(int,sys.stdin.readline().split())
    if a + b == 0 :
        break
    else : print(a + b)
入力では、A、Bは0より大きく、10より小さい整数であるため、和を0とする必要はない.したがって,a = 0, b = 0,合計0であれば,breakを歩いてwhileゲートを脱出すればよい.

C++プール

#include <iostream>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    while (true) {
    	int A, B;
    	cin >> A >> B;
    	if (!(A+B)) break;
    	cout << A + B << '\n';
    }
}
if (!(A+B)) break;という部分は以前にも説明したように、文の条件部分が真(true)か偽(false)かであれば、次の文を実行するかどうかを決定します.if文では、条件にチタン数字がある場合、if文は数字0がfalseであり、そうでない場合はtrueであると考えられる.
したがって、if (5)と呼ぶと0ではないので、trueと認識して条件文を実行する.上記のコードでも分かるように、if (!(A+B))は、A+Bが数字面(例えば7)の前に!を付けたため、その意味を否定している.
すなわち、7は入力としてtrueを返して条件文を実行するが、これはtrueの否定であるため、falseとなり条件文を実行しない.
A+Bが0なら?if (0)は、if (false)に等しく、falseの否定となり、条件文が実行される.
A+Bが0(A=0,B=0)の場合、while文を終了し、実行を終了します.