#167. 数字归 1 游戏

数字归 1 游戏

【题目描述】

小灰灰最近迷上了数字游戏。

游戏是这样的,给定正整数 xx 和大于 1 的正整数 kk,他需要把 xx 变为 1,通过以下两种操作:

  • 如果当前的 xxkk 的倍数,那么将 xx 除去 kk
  • 如果当前的 xx 不是 kk 的倍数,那么将 xx 加上 1。

能够发现,经过若干次操作后 xx 终将会变为 1,而这里的操作次数很值得研究。

于是记 f(x,k)f(x, k) 表示将 xx 在除 kk 和加 1 的方式下变为 1 的最少操作次数。

小蓝观察了这个函数,于是向你提出了 mm 个问题,其中第 ii 个问题给定三个参数 lil_irir_ikik_i,你需要计算出区间 [li,ri][l_i, r_i] 中所有整数在除 kik_i 和加 1 的方式下变为 1 的最少操作次数,并求和输出。

形式化的说,对于第 ii 个问题,你需要输出 j=lirif(j,ki)\sum_{j=l_i}^{r_i} f(j, k_i)


【输入描述】

输入第一行一个整数 mm 代表询问次数

接下来 mm 行,每行三个空格分隔的整数 lil_irir_ikik_i

保证:

  • 1m1051\le m \le 10^5
  • 1liri1091\le l_i \le r_i \le 10^{9}
  • 2ki1092\le k_i \le 10^9

【输出描述】

输出共 mm 行,第 ii 行一个整数表示第 ii 次询问的答案。


【样例 1】

【样例 1 输入】

1
1 10 2

【样例 1 输出】

35

【样例 1 解释】

k=2k=2 时,每个数的操作次数:

  • f(1,2)=0f(1,2)=0(已是1,无需操作)
  • f(2,2)=1f(2,2)=12/2=12/2=1
  • f(3,2)=3f(3,2)=33+1=43+1=44/2=24/2=22/2=12/2=1
  • f(4,2)=2f(4,2)=24/2=24/2=22/2=12/2=1
  • f(5,2)=5f(5,2)=55+1=65+1=66/2=36/2=33+1=43+1=44/2=24/2=22/2=12/2=1
  • f(6,2)=4f(6,2)=46/2=36/2=33+1=43+1=44/2=24/2=22/2=12/2=1
  • f(7,2)=4f(7,2)=47+1=87+1=88/2=48/2=44/2=24/2=22/2=12/2=1
  • f(8,2)=3f(8,2)=38/2=48/2=44/2=24/2=22/2=12/2=1
  • f(9,2)=7f(9,2)=79+1=109+1=1010/2=510/2=55+1=65+1=66/2=36/2=33+1=43+1=44/2=24/2=22/2=12/2=1
  • f(10,2)=6f(10,2)=610/2=510/2=55+1=65+1=66/2=36/2=33+1=43+1=44/2=24/2=22/2=12/2=1

总和 = 0+1+3+2+5+4+4+3+7+6=350+1+3+2+5+4+4+3+7+6=35

【样例 2】

【样例 2 输入】

3
1 5 3
6 6 3
1 1 5

【样例 2 输出】

12
3
0

【样例 2 解释】

第一个询问 [1,5],k=3[1,5], k=3

  • f(1,3)=0f(1,3)=0

  • f(2,3)=2f(2,3)=22+1=32+1=33/3=13/3=1

  • f(3,3)=1f(3,3)=13/3=13/3=1

  • f(4,3)=5f(4,3)=54+2=64+2=66/3=26/3=22+1=32+1=33/3=13/3=1

  • f(5,3)=4f(5,3)=45+1=65+1=66/3=26/3=22+1=32+1=33/3=13/3=1

    总和 = 0+2+1+5+4=120+2+1+5+4=12

第二个询问 [6,6],k=3[6,6], k=3

  • f(6,3)=3f(6,3)=36/3=26/3=22+1=32+1=33/3=13/3=1

    总和 = 33

第三个询问 [1,1],k=5[1,1], k=5

  • f(1,5)=0f(1,5)=0(已是1,无需操作)

    总和 = 00

【样例 3】

【样例 3 输入】

5
7 7 7
1 4 3
10 10 2
9 9 3
8 8 2

【样例 3 输出】

1
8
6
2
3

【样例 3 解释】

第一个询问 [7,7],k=7[7,7], k=7

  • f(7,7)=1f(7,7)=17/7=17/7=1

    总和 = 11

第二个询问 [1,4],k=3[1,4], k=3

  • f(1,3)=0f(1,3)=0

  • f(2,3)=2f(2,3)=22+1=32+1=33/3=13/3=1

  • f(3,3)=1f(3,3)=13/3=13/3=1

  • f(4,3)=5f(4,3)=54+2=64+2=66/3=26/3=22+1=32+1=33/3=13/3=1

    总和 = 0+2+1+5=80+2+1+5=8

第三个询问 [10,10],k=2[10,10], k=2

  • f(10,2)=6f(10,2)=610/2=510/2=55+1=65+1=66/2=36/2=33+1=43+1=44/2=24/2=22/2=12/2=1

    总和 = 66

第四个询问 [9,9],k=3[9,9], k=3

  • f(9,3)=2f(9,3)=29/3=39/3=33/3=13/3=1

    总和 = 22

第五个询问 [8,8],k=2[8,8], k=2

  • f(8,2)=3f(8,2)=38/2=48/2=44/2=24/2=22/2=12/2=1

    总和 = 33


【数据规模与约定】

测试点编号 分数 特殊性质 1 特殊性质 2
1 5 l=rl = r k9k \le 9
2
3 10 r2×107r \le 2\times 10^7 k=3k = 3
4 15 r1000r \le 1000m1000m \le 1000 k9k\le 9
5 5 k=109k = 10^9
6 15 r1000r \le 1000m1000m \le 1000
7 25 k9k \le 9
8 20