当前位置:   article > 正文

第十五届蓝桥杯省赛PythonA组B题【召唤数学精灵】题解_蓝桥杯2024年第十五届省赛真题python组 召唤数学精灵

蓝桥杯2024年第十五届省赛真题python组 召唤数学精灵

在这里插入图片描述

解题思路

A ( i ) = 1 + 2 + 3 + ⋯ + i A(i) = 1 + 2 + 3 + \dots + i A(i)=1+2+3++i
B ( i ) = 1 × 2 × 3 × ⋯ × i B(i) = 1 \times 2 \times 3 \times \dots \times i B(i)=1×2×3××i

要使 ( A ( i ) − B ( i ) ) % 100 = 0 (A(i) - B(i)) \% 100 = 0 (A(i)B(i))%100=0,应当要有 A ( i ) % 100 = B ( i ) % 100 A(i) \%100 = B(i) \% 100 A(i)%100=B(i)%100

B % 100 = 1 , 2 , 6 , 24 , 20 , 20 , 40 , 20 , 80 , 0 , 0 , 0 , 0 , … B \%100 = 1, 2, 6, 24, 20, 20, 40, 20, 80, 0, 0, 0, 0, \dots B%100=1,2,6,24,20,20,40,20,80,0,0,0,0,

我们会发现当 i ≥ 10 i \geq 10 i10 时, B ( i ) % 100 B(i) \% 100 B(i)%100 均为 0 0 0,因为 1 × 2 × 3 ⋯ × 10 1 \times 2 \times 3 \dots \times 10 1×2×3×10 中含有两个因子 5 5 5,和多个( ≥ 2 \geq2 2)因子 2 2 2 2 × 5 = 10 2 \times 5 = 10 2×5=10,当存在 ≥ 2 \geq 2 2 个因子 5 5 5 2 2 2 时,后两位必为 00 00 00

A ( i ) = 1 + 2 + 3 + ⋯ + i = i × ( i + 1 ) ÷ 2 A(i) = 1 + 2 + 3 + \dots + i=i \times (i + 1) \div 2 A(i)=1+2+3++i=i×(i+1)÷2

A ( i ) % 100 = i × ( i + 1 ) ÷ 2 % 100 A(i) \% 100 = i \times (i + 1) \div 2 \% 100 A(i)%100=i×(i+1)÷2%100

要使 A ( i ) % 100 = 0 A(i) \% 100 = 0 A(i)%100=0,即 i × ( i + 1 ) % 200 = 0 i \times (i + 1) \% 200 = 0 i×(i+1)%200=0

执行以下代码:

for i in range(1, 200 + 1):
    if i * (i + 1) % 200 == 0:
        print(i)
  • 1
  • 2
  • 3
'
运行

我们得知,一个长度为 200 200 200 的区间,会有 4 4 4 A ( i ) % 100 = 0 A(i) \% 100 = 0 A(i)%100=0

综上,我们可以先手动模拟计算 [ 1 , 9 ] [1, 9] [1,9] 的情况,再计算题目给出的区间内,有多少个 200 200 200,即可得到答案。

res = 2024041331404202 // 200 * 4

s1 = 0
s2 = 1
for i in range(1, 9 + 1):
    s1 += i
    s2 *= i
    if s1 % 100 == s2 % 100:
        res += 1

print(res)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
'
运行

运行结果:

40480826628086
  • 1
'
运行
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/946187
推荐阅读
相关标签
  

闽ICP备14008679号