About ReverseAndAdd ¶
일단 어떤 수를 받아서 그 수를 뒤집은 다음 뒤집어진 수를 원래의 수에 더하는 과정을 뒤집어서 더하기라고 부르자. 그 합이 회문(palindrome, 앞뒤 어느 쪽에서 읽어도 같은 말이 되는 어구. 예:eye, madam, 소주만병만주소)이 아니면 회문이 될 때까지 이 과정을 반복한다.
예를 들어 처음에 195에서 시작해서 다음과 같이 네 번 뒤집어서 더하기를 반복하면 9339라는 회문이 만들어진다.
대부분의 정수는 이 방법을 몇 단계만 반복하면 회문이 된다. 하지만 예외도 있다. 회문을 찾을 수 없는 것으로 밝혀진 첫번째 수는 196이다. 하지만 회문이 없다는 것이 증명된 적은 없다.
어떤 수가 주어졌을 때 회문이 있으면 출력하고, 그 회문을 찾기까지 뒤집어서 더하기를 반복한 횟수를 출력하는 프로그램을 만들어야 한다.
테스트 데이터로 쓴이는 수는 모두 뒤집어서 더하기를 1,000번 미만 반복해서 회문을 찾을 수 있는 수고, 그렇게 만들어진 회문을 4,294,967,295보다 크지 않다고 가정해도 된다.
~cpp 195 786 1473 5214 +591 +687 +3741 +4125 ---- ----- ----- ----- 786 1473 5214 9339
Input ¶
첫번째 줄에는 테스트 케이스를 나타내는 정수 N(0
output ¶
N개의 각 정수에 대해 회문을 발견하는 데 필요한 최소한의 반복 횟수를 출력하고, 스페이스를 한 칸 출력한 다음, 그 회문을 출력한다.
Sample Input ¶
~cpp 3 195 265 750
Sample Output ¶
~cpp 4 9339 5 45254 3 6666
풀이 ¶
작성자 | 사용언어 | 개발시간 | 코드 |
남상협 | Python | 60분 | ReverseAndAdd/남상협 |
신재동 | Python | 30분 | ReverseAndAdd/신재동 |
황재선 | Python | 50분 | ReverseAndAdd/황재선 |
김회영 | C | ? | ReverseAndAdd/김회영 |
문보창 | C++/Python | 90분/20분 | ReverseAndAdd/문보창 |
곽세환 | C++ | ? | ReverseAndAdd/곽세환 |
이승한 | C++ | 1시간 40분 | ReverseAndAdd/이승한 |
김민경 | Python | . | ReverseAndAdd/민경 |
김태훈 | Python | . | ReverseAndAdd/태훈 |
김정현 | Python | . | ReverseAndAdd/김정현 |
정수민 | Python | . | ReverseAndAdd/정수민 |
남도연 | Python | . | ReverseAndAdd/남도연 |
최경현 | Python | . | ReverseAndAdd/최경현 |
김범준 | Python | . | ReverseAndAdd/김범준 |
임인택 | HaskellLanguage | 5분 | ReverseAndAdd/임인택 |
JuNe | J | 10분 | (<:@# , {:)@((+ |.)&.(10&#.^:_1)^:(-.@((-: |.)@(10&#.^:_1)))^:a:) |
허아영 | C++ | 2시간 | ReverseAndAdd/허아영 |
1002 | Python | 5분 | ReverseAndAdd/1002 |