위대한 사기꾼

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

요약
0부터 n까지의 정수 중 k진법과 -k진법 표현이 같은 것의 개수를 센다. n은 10^15까지, k는 1000까지 주어진다.
난이도

어려움10점 중 8점

유형
수학, 정수론, 동적 계획법, 조합론
정답자
아직 제출이 없습니다

문제

믿기 힘들겠지만 상근이는 이번 겨울 방학에 달에 갔다 왔다. 방학이 끝나고 학교로 돌아온 상근이는 친구들에게 달나라 사람(Selenites)을 만난 이야기를 들려주었다.

상근이는 주로 달에서 쓰는 수 체계를 설명했다. 달에서는 음의 진법을 사용한다.

음의 진법은 사람이 이해하기 어렵다. 그래서 상근이는 달을 여행하는 동안 00과 nn 사이(양 끝 포함)의 수 가운데 kk진법 표현과 −k-k진법 표현이 같은 수를 모두 외웠다. 상근이가 외운 수의 개수를 구하는 프로그램을 작성하시오.

xx의 kk진법 표현은 0≤ai<∣k∣0 \le a_i < |k|이고 ∑i=0paiki=x\sum_{i=0}^{p} a_i k^i = x를 만족하는 수열 a0,a1,…,apa_0, a_1, \ldots, a_p이다.

입력

첫째 줄에 두 정수 nn과 kk가 주어진다. (1≤n≤10151 \le n \le 10^{15}, 2≤k≤10002 \le k \le 1000)

출력

00과 nn 사이의 수 중에서 kk진법 표현과 −k-k진법 표현이 같은 수의 개수를 출력한다.

힌트

n=21n = 21, k=3k = 3일 때 외운 수는 0,1,2,9,10,11,18,19,200, 1, 2, 9, 10, 11, 18, 19, 20이다. 예를 들어 19=2013=201−319 = 201_3 = 201_{-3}이므로 두 표현이 같지만, 7=213=111−37 = 21_3 = 111_{-3}이므로 같지 않다.

n=21n = 21, k=2k = 2일 때 외운 수는 0,1,4,5,16,17,20,210, 1, 4, 5, 16, 17, 20, 21이다.

예제2

  1. 예제 1

    입력
    21 3
    
    예상 출력
    9
    
  2. 예제 2

    입력
    21 2
    
    예상 출력
    8