蓝桥杯乘积尾0(分析)

2023-10-27

1. 问题描述:

如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零? 

5650 4542 3554 473 946 4114 3871 9073 90 4329 
2758 7949 6113 5659 5245 7432 3051 4434 6704 3594 
9937 1173 6866 3397 4759 7557 3070 2287 1453 9899 
1486 5722 3135 1170 4014 5510 5120 729 2880 9019 
2049 698 4582 4346 4427 646 9742 7340 1230 7683 
5693 7015 6887 7381 4172 4341 2909 2027 7355 5649 
6701 6645 1671 5978 2704 9926 295 3125 3878 6785 
2066 4247 4800 1578 6652 4616 1113 6205 3264 2915 
3966 5291 2904 1285 2193 1428 2265 8730 9436 7074 
689 5510 8243 6114 337 4096 8199 7313 3685 211

输出

输出一个整数表示答案 

来源:http://oj.ecustacm.cn/problem.php?id=1361

2. 思路分析:

一开始的时候没有什么思路,感觉这么多大的数相乘肯定是出现溢出的情况,但是在使用python语言相乘的时候发现竟然没有出现结果溢出的情况。在网上查找了一下资料发现可以计算这些数字中包含着2的数目与5的数目的个数,两个数目的最小值就是乘积尾0的个数。具体的思路:首先0是由2 * 5得到的,所以我们需要计算出能够相互匹配的2和5的个数,也就是因子2和因子5的最小值,举一个简单的例子:4 * 25 = 100,其中4包括两个2,25包括两个5所以最终2和5匹配的数目为2也即乘积尾0的个数就是2,所以问题就转化为求解这些数字中因子2的数目和因子5的数目。因为数字比较多所以将这些数字复制到一个txt文件中,通过readlines方法读取整个文件,方法的返回值为包含文件中每一行内容的字符串类型,然后通过去除掉每一行的换行符使用空格对其分割得到字符串列表,遍历这个列表将字符串转为数字求解当前的数字中包含2和5的个数。这里可以使用一个递归的方法求解(也可以使用一个迭代的方法求解),每一次能够被当前的因子2或者5整除的时候那么就继续递归直到不能够被整除了那么返回0,每一次能够被整除的时候计数都是加1的。最终的答案是31。

3. 代码如下:

# 递归方法求解当前数字中包含因子factor的数目
def countFactors(n: int, factor: int):
    if n % factor != 0:
        return 0
    else:
        return 1 + countFactors(n // factor, factor)


if __name__ == '__main__':
    file = open("data.txt", "r+")
    # 读取整个文件
    txt = file.readlines()
    res = 1
    cnt2, cnt5 = 0, 0
    for line in txt:
        nums = line.strip("\n").split()
        for n in nums:
            res *= int(n)
            cnt2 += countFactors(int(n), 2)
            cnt5 += countFactors(int(n), 5)
    print(min(cnt2, cnt5))
    print(res)

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝桥杯乘积尾0(分析) 的相关文章

  • 蓝桥杯第十一届青少年Python组省赛试题

    选择题答案 ADDCA s input if s 2 er or s 2 ly s s 2 elif s 3 ing s s 3 print s n int input cnt 0 for i in range 2 n s 0 for j
  • C语言 在数组中找到和值为目标值的两个元素

    输入你的目标值target 就能找到相加为target的两个数了 自己输入一个数组 并且设定一个目标值 target 就能在数组中找到两个相加等于target的元素了 include
  • 第六题 整除排序

    题目描述 有一个序列 序列的第一个数是n 后面的每个数是前一个数整除2 请输出这个序列中的值为正数 的项 输入格式 输入一行包括一个整数n 输出格式 输出一行 包括多个整数 相邻的整数之间用一个空格分开 表示答案 测评用例规模和标准 对于8
  • 青蛙过河 蓝桥杯 2097

    问题描述 小青蛙住在一条河边 它想到河对岸的学校去学习 小青蛙打算经过河里 的石头跳到对岸 河里的石头排成了一条直线 小青蛙每次跳跃必须落在一块石头或者岸上 不过 每块石头有一个高度 每次小青蛙从一块石头起跳 这块石头的高度就 会下降 1
  • c++ 中ref 和引用的区别

    c 中 本身可以使用 来实现引用 那为什么还会出现ref 呢 ref int f2 int c c cout lt lt in function c lt lt c lt
  • 蓝桥杯 题库 简单 每日十题 day2

    01 卡片 题目描述 本题为填空题 只需要算出结果后 在代码中使用输出语句将所填结果输出即可 小蓝有很多数字卡片 每张卡片上都是数字 0 到 9 小蓝准备用这些卡片来拼一些数 他想从 1 开始拼出正整数 每拼一个 就保存起来 卡片就不能用来
  • 备战2023蓝桥国赛-饼干

    题目描述 解析 这道题我想了很多种解决方法 但无一例外都失败了 实在是按照常规线性DP的思路真的想不出来 看了题解之后才知道它是分为三步解决这个问题的 第一步 缩小最优解的范围 先用贪心将最优解缩小到某个较小的范围内 再DP求出精确的最优解
  • 第十三届蓝桥杯省赛 JAVA A组 - 矩形拼接

    个人博客 https blog csdn net Newin2020 spm 1011 2415 3001 5343 专栏地址 蓝桥杯题解集合 专栏定位 为想参加蓝桥杯的小伙伴整理常考算法题解 祝大家都能取得理想成绩 如果有收获的话 欢迎点
  • 蓝桥杯单片机14届省赛解析(个人)

    下面记录一下自己这届省赛比赛时的思路 不太会写作文 比较口语化 而且一些看法仅仅是我个人观点 赛后我还没有看过任何讲解或例程 可能会有很多理解不对的地方希望大家能够指出一起交流 一 硬件框图 往届省赛基本上都是考两个外设 这次一看硬件框图就
  • c1048: [编程入门]自定义函数之字符串拷贝

    题目描述 有一字符串 包含n个字符 写一函数 将此字符串中从第m个字符开始的全部字符复制成为另一个字符串 输入 数字n 一行字符串 数字m 输出 从m开始的子串 样例输入复制 6 abcdef 3 样例输出复制 cdef 思路 两种方法 一
  • openGL之API学习(一九三)glGenTextures

    生成纹理单元名 单元名不一定是连续的 但是没有使用的 单元名是相对GL TEXTURE0的 对于单元名1 其实是GL TEXTURE0 1 glGenTextures产生的是一个比较小的整数id 纹理单元名 glActiveTexture激
  • SEGGER_RTT_printf()函数实现打印浮点、负数-示例

    概述 最近公司项目换另一款gsensor 用到了浮点数打印 又不想使用串口来打印数据 在此做个笔录 通过修改源码方式实现 一 修改源码 1 在 SEGGER RTT printf c 中 的 int SEGGER RTT vprintf u
  • Python蓝桥杯 基础练习 十六进制转八进制

    def huan n n format int n 16 o print n x int input for i in range 1 x 1 n input huan n format o 将数据格式化为八进制 int n 16 返回字符
  • xml转义字符

    在mybatis在编写sql时不能在XML里直接使用 lt 或者是 gt 在这里需要使用转义字符替换 下面列举常用的xml转义对应 1 lt lt 小于号 2 gt gt 大于号 3 amp 和 4 apos 单引号 5 quot 双引号
  • 蓝桥杯每日一题2023.9.16

    蓝桥杯2022年第十三届省赛真题 X进制减法 C语言网 dotcpp com 题目描述 进制规定了数字在数位上逢几进一 X 进制是一种很神奇的进制 因为其每一数位的进制并不固定 例如说某种 X 进制数 最低数位为二进制 第二数位为十进制 第
  • 2023蓝桥杯python 组试题A:2023

    题目 请求出在 12345678 至 98765432 中 有多少个数中完全不包含 2023 完全不包含 2023 是指无论将这个数的哪些数位移除都不能得到 2023 例如 20322175 33220022 都完全不包含 2023 而 2
  • 1141 二维数组的输入和输出

    题目描述 输入m行n列的二维数组的值 再按行列形式输出 输入要求 第一行输入m n代表行数和列数 接着输入具体的m n个元素 输出要求 按行列形式换行输出 每一个数据后面都有空格 一行输出完毕后换行 输入样例 2 5 1 4 6 23 1
  • 2022年第十四届蓝桥杯模拟赛【核酸日期】C语言详解

    目录 题目 思路 代码实现 题目 核酸日期 问题描述 如果周一做核酸 周二显示核酸天数为 1 天 周三显示 2 天 以此类推 周六显示 5 天 周日显示 6 天 小蓝在某一天做了一次核酸 请问他的核酸显示为几天 已知做核酸和查看核酸不是在同
  • 【第十四届蓝桥杯三月真题刷题训练——第 24 天 (3.27)& 旋转 & 附近最小 & 扫地机器人 & 窗口】

    第一题 旋转 import java util Scanner public class Main static int N 300 static int a new int N N static int b new int N N pub
  • 试题 B: 顺子日期

    问题描述 小明特别喜欢顺子 顺子指的就是连续的三个数字 123 456 等 顺子日 期指的就是在日期的 yyyymmdd 表示法中 存在任意连续的三位数是一个顺 子的日期 例如 20220123 就是一个顺子日期 因为它出现了一个顺子 12

随机推荐

  • signature=8f638f82cfb5ef3c26e5bb05751ee69d,iSpy/VideoSourceAdvanced.resx at 4eee092db75fe362bcfb7752...

    text microsoft resx 2 0 System Resources ResXResourceReader System Windows Forms Version 4 0 0 0 Culture neutral PublicK
  • STM32微控制器综合实训11 伺服电机控制器设计实验

    实验11 伺服电机控制器设计实验 了解伺服电机的应用领域 掌握伺服电机的速度控制模式 伺服电机的位置控制模式 文章目录 程序设计 伺服电机的速度控制模式代码讲解 main c timer c 伺服电机的位置控制模式代码讲解 main c t
  • 8 Buildroot 根文件系统构建

    一 根文件系统简介 根文件系统一般也叫做 rootfs 这个是属于 Linux 内核的一部分 根文件系统首先是一种文件系统 该文件系统不仅具有普通文件系统的存储数据文件的功能 但是相对于普通的文件系统 它的特殊之处在于 它是内核启动时所挂载
  • oracle函数忽略大小写,Oracle中不区分大小写的主键

    我们的数据的语义不区分大小写 因此我们将oracle会话配置为不区分大小写 alter session set NLS COMP LINGUISTIC alter session set NLS SORT BINARY AI 然后 为了利用
  • vue3中的reactive和ref

    一 关于reactive reactive 接受一个对象类型的值 返回一个对象的代理 reactive的特点 1 仅对对象类型有效 对象 数组和 Map Set 这样的集合类型 而对 string number 和 boolean 这样的
  • 自己动手写一个key value store

    一涉及到persistent 哪怕只是最基本的需求 很多人都会依赖数据库 或是其他现成的库或工具 确实 对于文件 大部分人很少直接打交道 或者只是诸如整体反序列化 序列化 按行读取 append new line等有限的操作 一个persi
  • JAVA 文件的基本操作

    获取指定目录下的所有文件的名字 param path 目标目录路径 public static ArrayList
  • 光谱成像技术用于河北鸭梨的物理损伤检测

    目录 前言 相关工作 相关工作一 相关工作二 本文实验 样本 实验设备 数据处理 面检测方法一 面检测方法二 结论 参考文献 前言 高光谱成像技术可以对大范围的农产品进行识别和检测 已经在工业界得到应用 取代了效率低 精度低 费时费力的人工
  • WebView的一些问题分析

    1 性能问题 打开速度比原生慢 对于一个普通用户来讲 打开一个WebView通常会经理一下几个阶段 发出请求 gt 到达新的页面 页面白屏 gt 页面基本框架出现 但是没有数据 gt 页面处于loading状态 gt 出现数据 如果从程序上
  • ElasticSearch6.x +logstash6.x +MySQL8 MySQL8 数据同步,字母大小写问题

    ElasticSearch6 x logstash6 x同步MySQL8数据的时候 sql里面含有的大写字母 到了ElasticSearch6 x的时候就会变成小写 这是因为在jdbc conf里面没有添加 lowercase column
  • 黑客是这样的炼成的

    黑客的态度 黑客们解决问题 建设事物 信仰自由和双向的帮助 人人为我 我为人人 要想被认为是一名黑客 你的行为必须显示出你已经具备了这种态度 要想做的好象你具备这种态度 你就不得不真的具备这种态度 但是如果你想靠培养黑客态度在黑客文化中得到
  • Qt安卓工程报错:No rule to make target

    Qt编译工程报错 No rule to make target 网上查到的解决方案是这样的 第一种情况 Qt编译工程时候 所有用到的源文件包括头文件和库文件的 总路径长度不能超过190个左右字符 一旦超过 就会提示找不到那个文件 这个可能是
  • 新一代的网络请求库 Httpx

    点击上方 Python学习开发 选择 加为星标 第一时间关注Python技术干货 简介 HTTPX 是最近 GitHub看的到一个比较火的一个项目 根据官网的描述 总结有如下特点 和使用 requests 一样方便 requests 有的它
  • 排序算法(一)冒泡排序,简单选择排序,直接插入排序,希尔排序

    冒泡排序 简单选择排序 直接插入排序是三种复杂度为O n2 的算法 希尔排序在特殊增量序列的时候可以获得复杂度为O n3 2 冒泡排序 1 最简单的排序实现 这里把每个数和这个数之后的每个数比较 大于就交换位置 缺点 多出了很多次没有用的交
  • ros2 bag play

    optional arguments h help show this help message and exit s sqlite3 my read only test plugin my test plugin storage sqli
  • Idea intellij 如何创建多个Maven 模块进行协作?

    第一 根工程 先选择新建一个maven工程 不打勾Create from archetype 直接选择next 填写总的工程名字 这样就可以得到如下的项目 删除src下面的文件 比如现在的项目结构要做成如下形式 LS web admin c
  • 2020年12月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

    C C 编程 1 8级 全部真题 点这里 第1题 数组指定部分逆序重放 将一个数组中的前k项按逆序重新存放 例如 将数组8 6 5 4 1前3项逆序重放得到5 6 8 4 1 时间限制 1000 内存限制 65536 输入 输入为两行 第一
  • 国产免费虚拟化OVM与 OpenStack对比

    OpenStack作为一款全球化的开源软件 需要丰富而强大的技术团队进行深度开发与维护 OVM作为国产免费的虚拟化软件 有开箱即用的优势 不需要二次投入太多成本 下面对两个产品的深度对比 OVM是开箱即用的一站式解决方案 OpenStack
  • Gitee码云如何邀请合作者加入

    问题 在创建了项目之后 想邀请别人加入 始终找不到邀请的入口 解决方案 1 选中项目 2 点击管理 3 项目成员管理 开发者 添加项目成员 邀请用户 4 会有三种不同的邀请方式 随意邀请了
  • 蓝桥杯乘积尾0(分析)

    1 问题描述 如下的10行数据 每行有10个整数 请你求出它们的乘积的末尾有多少个零 5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6113 5659 5245 7432 3