题目链接

传送门

Description

方伯伯有一天去参加一个商场举办的游戏。商场派了一些工作人员排成一行。每个人面前有几堆石子。说来也巧,位置在 i 的人面前的第 j 堆的石子的数量,刚好是 i 写成 K 进制后的第 j 位。
现在方伯伯要玩一个游戏,商场会给方伯伯两个整数 L,R。方伯伯要把位置在 [L, R] 中的每个人的石子都合并成一堆石子。每次操作,他可以选择一个人面前的两堆石子,将其中的一堆中的某些石子移动到另一堆,代价是移动的石子数量 $ * $移动的距离。商场承诺,方伯伯只要完成任务,就给他一些椰子,代价越小,给他的椰子越多。所以方伯伯很着急,想请你告诉他最少的代价是多少。
例如:10 进制下的位置在 12312 的人,合并石子的最少代价为:
$1 * 2 + 2 * 1 + 3 * 0 + 1 * 1 + 2 * 2 = 9$
即把所有的石子都合并在第三堆

Input

输入仅有 1 行,包含 3 个用空格分隔的整数 L,R,K,表示商场给方伯伯的 2 个整数,以及进制数

Output

输出仅有 1 行,包含 1 个整数,表示最少的代价。

Sample Input

3 8 3

Sample Output

5

HINT

1 < = L < = R < = 10^15, 2 < = K < = 20

Source

By 佚名提供

题解

数位dp
$dp[i][j][0/1]$表示从高到低的二进制第$i$位,数字之和是$j$,是否卡上界的状态数
然后我们发现显然把石子转移到中位数那边是最优的
所以说我们可以先判断一下
然后如果在之前就全体向后挪一位
在之后就向前
转移就行了

代码