아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

자기복제 수

시간 제한2초메모리 제한64 MB

요약
제곱한 값의 뒤 n자리가 원래 수와 같은 b진법 n자리 수를 모두 구합니다.
난이도

보통10점 중 7점

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

문제

미샤는 수를 가지고 노는 것을 좋아한다. 며칠 전 미샤는 93762=879093769376^2 = 87909376이고, 제곱한 값의 마지막 네 자리가 다시 93769376이라는 사실을 발견했다. 미샤는 이런 수를 자기복제 수라고 부른다.

미샤는 10진법 말고 다른 진법도 알고 있어서 2진법이나 16진법의 자기복제 수도 궁금해한다. 진법의 밑 bb와 자릿수 nn이 주어질 때, bb진법으로 nn자리인 자기복제 수를 모두 찾는 프로그램을 작성하시오.

수 xx가 bb진법 nn자리 자기복제 수라는 것은 다음 두 조건을 모두 만족한다는 뜻이다.

  • 앞에 00을 붙이지 않고 xx를 bb진법으로 적으면 자릿수가 정확히 nn이다. 00은 한 자리 수 0으로 본다.
  • x2x^2을 bb진법으로 적었을 때 마지막 nn자리가 xx의 표기와 같다. 즉 x2≡x(modbn)x^2 \equiv x \pmod{b^n}이다.

입력

첫째 줄에 진법의 밑 bb와 자릿수 nn이 공백 하나로 구분되어 주어진다. (2≤b≤362 \le b \le 36, 1≤n≤20001 \le n \le 2000)

출력

첫째 줄에 bb진법 nn자리 자기복제 수의 개수 KK를 출력한다. 이어지는 KK개의 줄에 조건을 만족하는 수를 bb진법으로 한 줄에 하나씩, 값이 작은 것부터 큰 순서로 출력한다.

b>10b > 10이면 1010부터 3535까지의 숫자를 대문자 A부터 Z까지로 나타낸다. 조건을 만족하는 수가 하나도 없으면 첫째 줄에 00만 출력한다.

예제1

  1. 예제 1

    입력
    12 6
    
    예상 출력
    2
    1B3854
    A08369