CFCF2153E.Zero Trailing Factorial

提高+/省选-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

对于所有正整数 x1x \geq 1k2k \geq 2,定义 vk(x!)v_k(x!) 表示在 x!=x(x1)1x! = x \cdot (x-1) \cdots 1kk 进制表示下末尾零的个数。形式上,vk(x!)v_k(x!) 被定义为最大的整数 ii,使得 kik^i 整除 x!x!

对于一个质数 pp,可以通过公式 vp(x!)=j=1xpjv_p(x!) = \sum\limits_{j=1}^\infty \left\lfloor \frac{x}{p^j}\right\rfloor ^{\text{∗}} 计算。如果 kk 不是质数,将其素因数分解为 k=pieik = \prod p_i^{e_i},其中 pip_i 是不同的质因子,eie_i 是对应的指数。此时,

vk(x!)=minivpi(x!)ei.v_k(x!) = \min\limits_i \left\lfloor \frac{v_{p_i}(x!)}{e_i}\right\rfloor.

对于任意两个正整数 aabb,以及任意整数 k2k \ge 2,定义数对 (a,b)(a, b)kk 下的权重 wk(a,b)w_k(a, b),如下:

wk(a,b)={min(vk(a!),vk(b!))if vk(a!)vk(b!)10100otherwise.w_k(a, b) = \begin{cases} \min(v_k(a!), v_k(b!)) & \text{if } v_k(a!) \neq v_k(b!);\\ 10^{100} & \text{otherwise.} \end{cases}

进一步,定义 fm(a,b)f_m(a, b)kk 取遍 2km2 \le k \le m(a,b)(a, b) 的最小权重:

fm(a,b)=min2kmwk(a,b).f_m(a, b) = \min\limits_{2 \le k \le m} w_k(a, b).

现给定两个整数 nnmm,你的任务是计算 1xn1fm(x,n)\sum_{1 \le x \le n - 1} f_m(x, n)

可以证明,在给定约束下,结果严格小于 1010010^{100}

^{\text{∗}} 这里 y\lfloor y \rfloor 表示 yy向下取整,即小于等于 yy 的最大整数。

输入格式

每个测试点包含多组测试数据。第一行包含一个整数 tt1t1001 \le t \le 100),表示测试用例的组数。

每组测试数据的一行包含两个整数 nnmm2nm1072 \le n \le m \le 10^7)——分别表示函数的参数。

注意,所有测试数据中 nnmm 的总和没有额外限制。

输出格式

对于每组测试数据,输出一行一个整数,表示 1xn1fm(x,n)\sum\limits_{1 \le x \le n-1} f_m(x, n) 的结果。

输入输出样例

  • 输入#1

    5
    3 5
    6 7
    6 10
    36 68
    10000000 10000000

    输出#1

    0
    1
    0
    13
    279933

说明/提示

在第一个测试点中,考虑 k=35k=3 \le 5

  • v3(1!)=v3(2!)=0v_3(1!)=v_3(2!)=0,因为 33 不能整除 1!1!2!2!
  • v3(3!)=v3(6)=1v_3(3!) = v_3(6) = 1,因为 33 能整除 66,但 32=93^2 = 9 不能。

因此,w3(1,3)=w3(2,3)=min(0,1)=0w_3(1, 3)=w_3(2, 3)=\min(0,1)=0。可以证明这是所有 2k52 \le k \le 5 中的最小权重,所以 f5(1,3)=f5(2,3)=0f_5(1, 3)=f_5(2, 3)=0

在第二个测试点中,可以证明 f7(1,6)=f7(2,6)=f7(3,6)=f7(4,6)=0f_7(1, 6)=f_7(2, 6)=f_7(3, 6)=f_7(4, 6)=0。对于 f7(5,6)f_7(5, 6),考虑 k=67k=6 \le 7

  • v6(5!)=v6(120)=1v_6(5!) = v_6(120) = 1,因为 66 能整除 120120,但 62=366^2 = 36 不能。
  • v6(6!)=v6(720)=2v_6(6!) = v_6(720) = 2,因为 3636 能整除 720720,但 63=2166^3 = 216 不能。

因此 w6(5,6)=min(1,2)=1w_6(5, 6) = \min(1, 2) = 1。可以证明这是所有 2k72 \le k \le 7 中的最小权重,所以 f7(5,6)=1f_7(5, 6) = 1

注意:选择 k=77k = 7 \le 7 无法取得更优,因为 v7(5!)=v7(6!)=0v_7(5!) = v_7(6!) = 0,这时 w7(5,6)=10100w_7(5, 6) = 10^{100}

在第三个测试点中,可以证明 f10(1,6)=f10(2,6)=f10(3,6)=f10(4,6)=0f_{10}(1, 6) = f_{10}(2, 6) = f_{10}(3, 6) = f_{10}(4, 6) = 0。对于 f10(5,6)f_{10}(5, 6),考虑 k=910k=9 \le 10

  • v9(5!)=v9(120)=0v_9(5!) = v_9(120) = 0,因为 99 不能整除 120120
  • v9(6!)=v9(720)=1v_9(6!) = v_9(720) = 1,因为 99 能整除 720720,但 92=819^2 = 81 不能。

因此 w9(5,6)=min(0,1)=0w_9(5, 6) = \min(0, 1) = 0。可以证明这是所有 2k102 \le k \le 10 的最小权重,所以 f10(5,6)=0f_{10}(5, 6) = 0

首页