儿童数
若一个正整数
n
n
n 满足
n
61
n^{61}
n61 整除
2024
!
2024!
2024!,即
2024
!
2024!
2024! 除以
n
61
n^{61}
n61 的余数为
0
0
0,则称
n
n
n 为儿童数。
现在,请你计算在区间
[
1
,
+
∞
)
[1, +\\infty)
[1,+∞) 内一共有多少个儿童数。
前置知识
勒让德公式
v
p
(
n
!
)
=
∑
k
=
1
∞
⌊
n
p
k
⌋
v_p(n!) = \\sum_{k=1}^{\\infty} \\left\\lfloor \\frac{n}{p^k} \\right\\rfloor
vp(n!)=k=1∑∞⌊pkn⌋
可以用这个公式计算
n
!
n!
n! 的质因数
p
p
p 的次数。
整除的充要条件
设
a
a
a 和
b
b
b 是正整数,且它们的质因数分解为:
a
=
p
1
α
1
p
2
α
2
⋯
p
k
α
k
,
b
=
p
1
β
1
p
2
β
2
⋯
p
k
β
k
a = p_1^{\\alpha_1} p_2^{\\alpha_2} \\cdots p_k^{\\alpha_k}, \\quad b = p_1^{\\beta_1} p_2^{\\beta_2} \\cdots p_k^{\\beta_k}
a=p1α1p2α2⋯pkαk,b=p1β1p2β2⋯pkβk
(若某个质数
p
i
p_i
pi 不在
a
a
a 或
b
b
b 的分解中,则对应的指数
α
i
\\alpha_i
αi 或
β
i
\\beta_i
βi 视为
0
0
0。)
整除的充要条件
a
∣
b
a \\mid b
a∣b 当且仅当
∀
i
∈
{
1
,
2
,
…
,
k
}
,
α
i
≤
β
i
\\forall i \\in \\{1, 2, \\dots, k\\}, \\alpha_i \\leq \\beta_i
∀i∈{1,2,…,k},αi≤βi。
即
a
a
a 的所有质因数的幂次都不超过
b
b
b 的对应幂次。
所以只要分解
2024
!
2024!
2024!,然后要满足每个质因数的幂次
p
p
p 满足
61
p
≤
e
61p \\leq e
61p≤e。故最终答案为
e
/
/
61
+
1
e // 61 + 1
e//61+1。
def is_prime(x):
if x<=1:
return False
for i in range(2,x):
if x%i==0:
return False
return True
d={}
for i in range(2,2024):
if is_prime(i):
cnt=0
j=i
while j<=2024:
cnt+=2024//j
j*=i
d[i]=cnt
# print(d)
ans=1
for x,cnt in d.items():
if cnt>=61:
ans*=(cnt//61+1)
print(ans)
评论前必须登录!
注册