11로 나누어떨어지는지 판별하기

면접 대비

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

요약
최대 50자리 수에 도지슨의 11의 배수 판정법을 적용해 각 중간 값을 출력하고 마지막에 11의 배수인지 판정한다.
난이도

보통10점 중 4점

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

문제

양의 정수를 입력받아, 아래 알고리즘을 이용해 그 수가 11로 나누어떨어지는지 판별하는 프로그램을 작성하세요. 이 11 나누어떨어짐 판정법은 1897년 Charles L. Dodgson(필명 Lewis Carroll)이 제시한 것입니다.

알고리즘:

판별 중인 수의 자릿수가 2보다 많은 동안, 다음 과정을 반복하여 새로운 수를 만듭니다.

  • 일의 자리 숫자를 지운다.
  • 지운 숫자를 남은 수에서 뺀다.

이렇게 얻은 수가 11로 나누어떨어지는 것은 원래 수가 11로 나누어떨어지는 것과 서로 필요충분조건입니다.

입력

입력의 첫 번째 수는 뒤따라 나오는 양의 정수의 개수를 나타냅니다. 각 양의 정수는 최대 50자리이며, 앞자리에 불필요한 0은 없다고 가정해도 됩니다.

출력

각 양의 정수에 대해, 먼저 그 수 자체를 출력하고, 이어서 일의 자리를 지우고 빼는 과정을 거칠 때마다 만들어지는 수를 한 줄에 하나씩 출력합니다(수의 자릿수가 2 이하가 되면 멈춥니다). 마지막으로 원래 수가 11로 나누어떨어지는지 여부를 알리는 문장을 출력합니다. 나누어떨어지면 The number X is divisible by 11., 그렇지 않으면 The number X is not divisible by 11. 형식을 그대로 사용하며, 여기서 X는 원래 수입니다. 서로 다른 양의 정수에 대한 출력은 빈 줄로 구분합니다.

힌트

앞자리의 0은 수의 일부로 보지 않으며 출력하지 않습니다.

예제2

  1. 예제 1

    입력
    1
    12345678901234567900
    
    예상 출력
    12345678901234567900
    1234567890123456790
    123456789012345679
    12345678901234558
    1234567890123447
    123456789012337
    12345678901226
    1234567890116
    123456789005
    12345678895
    1234567884
    123456784
    12345674
    1234563
    123453
    12342
    1232
    121
    11
    The number 12345678901234567900 is divisible by 11.
    
  2. 예제 2

    입력
    1
    1234567879
    
    예상 출력
    1234567879
    123456778
    12345669
    1234557
    123448
    12336
    1227
    115
    6
    The number 1234567879 is not divisible by 11.