구거법으로 검산하기

면접 대비

시간 제한1초메모리 제한128 MB

요약
각 줄에 주어진 a+b=c. 또는 a*b=c.에 대해 숫자 합을 9로 나눈 나머지를 비교하여, 합동이면 PASS를, 아니면 NOT!을 출력한다.
난이도

쉬움10점 중 3점

유형
수학, 정수론, 구현, 문자열 매칭
정답자
아직 제출이 없습니다

문제

위대한 수학자 피사의 레오나르도 피보나치(1170–1240)에 대해 들어보았을 것이다. 그가 1202년에 처음 출간한 책 Liber Abaci에서 설명한 여러 알고리즘 가운데에는 덧셈·뺄셈·곱셈을 검산하는 "구거법(casting out nines)" 절차가 있다. 역사학자들에 따르면 이 절차는 아랍인을 거쳐 유럽에 전해졌지만 실제로는 인도 아대륙에서 개발된 것으로 보이며, 그래서 "힌두 검산(Hindu check)"이라고도 불린다.

구거법은 합동식 10≡1(mod9)10 \equiv 1 \pmod 9을 이용하는 기초적인 검산법이다. x≡y(modz)x \equiv y \pmod z라고 쓰면 이는 x mod zx \bmod z와 y mod zy \bmod z가 같다는 뜻임을 기억하자.

자연수 aa, bb의 곱을 cc라 하고, aa, bb, cc의 각 자리 숫자의 합을 각각 aˉ\bar a, bˉ\bar b, cˉ\bar c라 하자. 그러면 a≡aˉ(mod9)a \equiv \bar a \pmod 9, b≡bˉ(mod9)b \equiv \bar b \pmod 9, c≡cˉ(mod9)c \equiv \bar c \pmod 9가 성립한다. 또한 a×b≡aˉ×bˉ(mod9)a \times b \equiv \bar a \times \bar b \pmod 9이므로 aˉ×bˉ≡cˉ(mod9)\bar a \times \bar b \equiv \bar c \pmod 9이다. 따라서 cc와 aˉ×bˉ\bar a \times \bar b가 99를 법으로 하여 합동이 아니라면 그 곱셈은 잘못 계산된 것이다.

예를 들어 12345×67890=83810205012345 \times 67890 = 838102050이다. 1234512345와 6789067890의 자리합은 각각 1515와 3030이고 그 곱은 450450이다. 838102050838102050의 자리합은 2727이다. 450≡27≡0(mod9)450 \equiv 27 \equiv 0 \pmod 9이므로 검산이 일치한다.

다른 예로, 어떤 사람이 13579×24680=33412972013579 \times 24680 = 334129720이라고 잘못 계산했다고 하자. 이때 aˉ×bˉ=25×20=500≡5(mod9)\bar a \times \bar b = 25 \times 20 = 500 \equiv 5 \pmod 9인 반면 cˉ=31≡4(mod9)\bar c = 31 \equiv 4 \pmod 9이므로 이 곱셈은 확실히 틀렸다.

a+b≡aˉ+bˉ(mod9)a + b \equiv \bar a + \bar b \pmod 9이 성립하므로 이 검산법은 덧셈에도 똑같이 적용할 수 있다.

주어진 덧셈 또는 곱셈이 힌두 검산을 통과하는지 판정하는 프로그램을 작성하라.

입력

프로그램은 하나 이상의 테스트 케이스로 시험된다. 각 테스트 케이스는 한 줄에 다음 형식으로 주어진다.

a+b=c.

또는

a*b=c.

줄 끝의 .에 주의하라. aa, bb, cc는 자연수이다. 숫자와 기호(+, *, =, .) 사이에는 공백이 없지만 . 뒤에는 공백이 올 수 있다.

입력의 마지막 줄은 . 하나만 있는 줄이며 테스트 케이스에 포함되지 않는다.

출력

각 테스트 케이스마다 다음 형식으로 한 줄을 출력한다.

k. result

여기서 kk는 테스트 케이스 번호(1부터 시작)이고, result는 해당 덧셈 또는 곱셈이 힌두 검산을 통과하면 PASS, 그렇지 않으면 NOT!이다.

예제1

  1. 예제 1

    입력
    12345*67890=838102050.
    13579*24680=334129720.
    23+11=34.
    .
    
    예상 출력
    1. PASS
    2. NOT!
    3. PASS