만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

여러 가지 방법으로 반올림하기

면접 대비

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

요약
주어진 N에 대해 2^a * 5^b 꼴이면서 N을 나누는 모든 X를 오름차순으로 구합니다.
난이도

쉬움10점 중 3점

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

문제

Timothy와 Alex는 UCF 학생회 선거에 출마하려던 꿈이 있었지만, 선거 티켓이 두운을 맞추지 못한다는 사실을 깨닫고 그 계획을 접었다. 대신 두 사람은 학생들에게 실시된 여러 설문 통계를 분석해서, 어떤 프로그래밍 팀원 두 명이 선거에서 가장 유리할지 알아보기로 했다.

문제는 모든 통계가 반올림되어 있다는 점이다. 설문 조사자들이 반올림 방식을 밝혔다면 문제가 없었겠지만, 그러지 않았다. (수학 용어 참고: 198을 200으로 반올림했다면, 198은 "참값", 200은 "반올림값"이라고 부른다.)

예를 들어 반올림값 750은 10의 자리로 반올림한 참값에서 나왔을 수도 있고, 250의 배수로 반올림한 참값에서 나왔을 수도 있다. 1의 자리로 반올림한 경우, 즉 사실상 반올림하지 않은 경우에도 나올 수 있다. 따라서 참값은 625일 수도 있고, 748처럼 더 가까운 값일 수도 있다.

다행히 Timothy와 Alex는 사전 조사를 거쳐 설문 조사자들이 쓴 일반적인 반올림 방식을 알아냈다.

  • 원래 통계값은 양의 정수 S이다.
  • 양의 정수 X를 고르는데, X는 10의 거듭제곱의 약수이다. 즉 X×Y=10ZX \times Y = 10^Z를 만족하는 음이 아닌 정수 Y, Z가 존재한다.
  • 마지막으로 통계값 S를 가장 가까운 X의 양의 배수로 반올림해 반올림값 N을 얻는다. 즉 X×W=NX \times W = N을 만족하는 양의 정수 W가 존재하고, ∣S−N∣|S - N|이 최소이다.

주어진 반올림값 N에 대해, 위 조건을 바탕으로 N이 반올림되었을 수 있는 모든 경우를 구하라. 다시 말해 다음 두 식을 모두 만족하는 X 값을 모두 구하라.

  • X×Y=10ZX \times Y = 10^Z
  • X×W=NX \times W = N

입력

첫 번째이자 유일한 줄에 반올림값을 나타내는 정수 N (1 ≤ N ≤ 10^{18})이 주어진다.

출력

첫 번째 줄에 N이 도출될 수 있는 서로 다른 X 값의 개수를 출력한다. 이어서 이 X 값들을 오름차순으로 한 줄에 하나씩 출력한다.

힌트

아래 설명은 첫 번째 예시 입력과 출력에 대한 것이다.

출력: 1
    X = 1, Y = 10, Z = 1, W = 30
    1의 배수로 반올림: 1*10=10, 1*30=30
출력: 2
    X = 2, Y = 5, Z = 1, W = 15
    2의 배수로 반올림: 2*5=10, 2*15=30
출력: 5
    X = 5, Y = 2, Z = 1, W = 6
    5의 배수로 반올림: 5*2=10, 5*6=30
출력: 10
    X = 10, Y = 1, Z = 1, W = 3
    10의 배수로 반올림: 10*1=10, 10*3=30

예제3

  1. 예제 1

    입력
    30
    
    예상 출력
    4
    1
    2
    5
    10
    
  2. 예제 2

    입력
    120
    
    예상 출력
    8
    1
    2
    4
    5
    8
    10
    20
    40
    
  3. 예제 3

    입력
    8
    
    예상 출력
    4
    1
    2
    4
    8