Informatica Online Judge

  함수로 수 뒤집어 더하기 [1281 / 0501]

Time Limit(Test case) : 1000(ms)
Number of users who solved : 619   Total Tried : 1960


The Champion of this Problem (C++) : gs17033 - ms / 95byte
My Best Submission (C++) : N/A

[JKJeong 2015]

Background

*주의사항 : 이 (함수 제출형) 문제는 함수 부분만 작성해서 제출해야 오류 없이 채점이 됩니다.
미리 작성되어있는 코드를 읽고 해석해서, 함수 부분만 작성해서 제출하면 됩니다.
작성한 함수의 테스트를 위해서는 제시된 코드를 복사해 사용하면 되고, 제출은 함수 부분만 하세요.

------

팰린드롬(Palindrome)은 회문자라고도 하며 앞으로 읽으나 뒤로 읽으나 같은 내용이 되는 문자나 문장을 말한다.

거의 모든 0이상의 정수는 역순으로 된 수를 더하는 과정을 반복하면 어느 순간에는 팰린드롬인 수가 만들어진다. 예를 들어, 처음 수가 195일 경우, 아래와 같이 4번을 반복하여 더하면 팰린드롬 수가 만들어진다.

195 처음 수
591
-----
786
687
-----
1473
3741
-----
5214
4125
-----
9339 결과(팰린드롬 수)

대부분의 0이상의 정수는 이런 몇 번의 반복으로 팰린드롬인 수를 만들 수 있지만 196만은 팰린드롬을 만들지 못하는 수이다.

왜 그런지는 아직 증명되지는 않았다. 처음 수를 입력받아 몇 번 만에 팰린드롬인 수를 만들 수 있는지 그 횟수와 그 팰린드롬 수를 구하는 프로그램을 작성하시오.

[미리 작성된 프로그램]

#include <stdio.h>

int f(int);
bool is_Pal(int);

int main()
{
int n, cnt = 0;
scanf("%d", &n);
for( cnt = 0 ; !is_Pal(n) ; cnt++ )
{
n = n + f(n);
}
printf("%d %d", cnt, n);
return 0;
}

Input

[미리 입력된 프로그램의 입력]

196을 제외한 0이상의 정수를 입력한다. (단, 입력숫자는 만들어지는 팰린드롬 수가 2^31-1을 넘지 않는 값이다.)

Output

[미리 입력된 프로그램의 출력]

출력내용은 반복한 횟수와 팰린드롬인 수를 공백으로 구분하여 출력한다.

IO Example

[미리 입력된 프로그램의 입출력 예시]

예시1>

입력
195

출력
4 9339


예시2>

입력
265

출력
5 45254

Submit : [C/C++] | [C++11] | [Obj-C] | [Java] | [Python]
Prob Analysis : [Problem Statistics] | [Solution]