#167. 数字归 1 游戏

数字归 1 游戏

【题目描述】

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

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

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

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

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

小蓝观察了这个函数,于是向你提出了 mm 个问题,其中第 ii 个问题给定三个参数 lil_i、rir_i 和 kik_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_i、rir_i 和 kik_i

保证:

  • 1≤m≤1051\le m \le 10^5
  • 1≤li≤ri≤1091\le l_i \le r_i \le 10^{9}
  • 2≤ki≤1092\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)=1(2/2=12/2=1)
  • f(3,2)=3f(3,2)=3(3+1=43+1=4,4/2=24/2=2,2/2=12/2=1)
  • f(4,2)=2f(4,2)=2(4/2=24/2=2,2/2=12/2=1)
  • f(5,2)=5f(5,2)=5(5+1=65+1=6,6/2=36/2=3,3+1=43+1=4,4/2=24/2=2,2/2=12/2=1)
  • f(6,2)=4f(6,2)=4(6/2=36/2=3,3+1=43+1=4,4/2=24/2=2,2/2=12/2=1)
  • f(7,2)=4f(7,2)=4(7+1=87+1=8,8/2=48/2=4,4/2=24/2=2,2/2=12/2=1)
  • f(8,2)=3f(8,2)=3(8/2=48/2=4,4/2=24/2=2,2/2=12/2=1)
  • f(9,2)=7f(9,2)=7(9+1=109+1=10,10/2=510/2=5,5+1=65+1=6,6/2=36/2=3,3+1=43+1=4,4/2=24/2=2,2/2=12/2=1)
  • f(10,2)=6f(10,2)=6(10/2=510/2=5,5+1=65+1=6,6/2=36/2=3,3+1=43+1=4,4/2=24/2=2,2/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)=2(2+1=32+1=3,3/3=13/3=1)

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

  • f(4,3)=5f(4,3)=5(4+2=64+2=6,6/3=26/3=2,2+1=32+1=3,3/3=13/3=1)

  • f(5,3)=4f(5,3)=4(5+1=65+1=6,6/3=26/3=2,2+1=32+1=3,3/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)=3(6/3=26/3=2,2+1=32+1=3,3/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)=1(7/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)=2(2+1=32+1=3,3/3=13/3=1)

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

  • f(4,3)=5f(4,3)=5(4+2=64+2=6,6/3=26/3=2,2+1=32+1=3,3/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)=6(10/2=510/2=5,5+1=65+1=6,6/2=36/2=3,3+1=43+1=4,4/2=24/2=2,2/2=12/2=1)

    总和 = 66

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

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

    总和 = 22

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

  • f(8,2)=3f(8,2)=3(8/2=48/2=4,4/2=24/2=2,2/2=12/2=1)

    总和 = 33


【数据规模与约定】

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