当前位置: 首页 > article >正文

蓝桥杯训练—召唤数学精灵

文章目录

  • 一、题目
  • 二、解析
  • 三、代码


一、题目

数学家们发现了两种用于召唤强大的数学精灵的仪式,这两种仪式分别被称为累加法仪式
A(n)和累乘法仪式B(n)。
累加法仪式 A(n) 是将从 1 到 n的所有数字进行累加求和,即:A(n)=1+2+⋯+n
累乘法仪式 B(n) 则是将从 1 到 n 的所有数字进行累乘求积,即:B(n)=1×2×⋯×n
据说,当某个数字 i 满足 A(i)−B(i) 能被 100 整除时,数学精灵就会被召唤出来。
现在,请你寻找在 1 到 2024041331404202 之间有多少个数字 i,能够成功召唤出强大的数学精灵。

二、解析

由于B(i)是阶乘,当i≥10时,就是100的倍数了。那么只有A(i)也是100的倍数,才能满足A(i)−B(i)能被100整除。A(i)什么时候是100的倍数?A(i)是线性增长的,稍微算算就发现,每200个数,有4个A(i)是100的倍数。一共有2024041331404202/200*4个。
对于 i<10,我们可以直接计算 A(i)−B(i) 并检查是否能被 100 整除。

三、代码

python代码:

count = 0
for i in range(1, 10):
    a = i * (i+1) // 2
    b = 1
    for j in range(1, i+1):
        b *= j
    if (a - b) % 100 == 0:
        count += 1
c = 2024041331404202 // 200 * 4
count = count + c
print(count)

运行结果:
在这里插入图片描述


http://www.kler.cn/a/571450.html

相关文章:

  • C++第六节:stack和queue
  • 文件上传复现
  • React Refs:深入理解与最佳实践
  • 在实际工作中,设计测试用例会用到的设计方法有哪些,请具体举例说明
  • Mlivus:索引类型对比
  • C++07(继承)
  • TCP为什么需要三次握手,两次不行吗?
  • SpringCloud系列教程(十二):网关配置动态路由
  • 前端怎么排查幽灵依赖
  • k8s面试题总结(九)
  • Spring Boot 与 MyBatis 版本兼容性
  • 三维重建(十五)——多尺度(coarse-to-fine)
  • 【开源-常用C/C++命令行解析库对比】
  • Python 的 json 模块可以帮助你把数据在两种格式之间转换
  • Qt C++ 开发 动态上下页按钮实现
  • 嵌入式学习l4day3
  • ​Unity插件-Mirror使用方法(六)组件介绍(​Network Transform)
  • Spring Cloud生态
  • 高频 SQL 50 题(基础版)_1341. 电影评分
  • 八、Redis 过期策略与淘汰机制:深入解析与优化实践