蓝桥杯真题——乘积尾零

本文介绍了一种统计多个整数中因子2和5数量的算法,通过遍历数组中的每个元素,不断除以2和5直至不能整除,以此来统计因子的数量。最终比较两个因子的数量,取较小值即为乘积中零的个数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

乘积的零的产生来源于所有被乘数的因子2和5相乘,分别统计所有被乘数的因子2和5的个数,取两者小的值就是答案

#include<iostream>
using namespace std;

struct st
    {
        int a2,a5;
    }st;
int main()
{
    int data[]={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
    };
    int len=sizeof(data)/sizeof(int);
    st.a2=0;st.a5=0;
    for(int i=0;i<len;i++)
    {

        while(data[i]%2==0)
        {
            st.a2++;
            data[i]/=2;
        }

        while(data[i]%5==0)
        {
            st.a5++;
            data[i]/=5;
        }
    }
    int minn=0;
    if(st.a2>=st.a5)minn=st.a5;
    else  minn=st.a2;
    cout<<minn<<endl;
    return 0;
}

### 第十二届蓝桥杯 Python A组 真题 以下是第十二届蓝桥杯 Python A组的部分真题及其背景描述: #### 题目A:带宽 此题考察的是字符串处理能力以及简单的逻辑运算。题目要求计算给定数据流中的最大带宽数值[^1]。 #### 题目B:纯质数 该问题涉及基础的数学概念——质数判断。具体来说,需要找出满足特定条件的一类特殊质数,并统计其总数。 #### 题目C:完全日期 本题主要测试考生对于日期时间的理解和操作技能。任务是验证某个年份是否存在所谓的“完全日期”,即某月某日正好等于当年天数总和的情况。 #### 题目D:最小权值 这是一个典型的图论最短路径算法应用实例。通过构建加权无向图模型来解决实际生活场景下的优化选择难题。 #### 题目E:大写 针对字符转换的基础练习题型之一,重点在于掌握大小写字母之间的ASCII码关系并实现相应功能函数。 #### 题目F:123 属于组合排列方面的思考挑战,需考虑如何有效枚举所有可能情况而不重复遗漏任何一种可能性。 #### 题目G:冰山 涉及到三维空间几何图形体积估算方法的研究探讨,在编程过程中还需要注意边界条件设定等问题。 #### 题目H:和与乘积 围绕两个整数数组展开分析讨论,目标是在一定约束条件下求得最佳匹配方案使得最终结果达到最优状态。 #### 题目I:二进制问题 深入探究计算机底层表示形式原理的应用实践案例,特别强调位运算技巧的重要性及其高效解决问题的能力展现。 #### 题目J:翻转括号序列 最后一大难点则聚焦于栈结构特性发挥极致效用之上,旨在检验学生能否灵活运用先进先出原则完成复杂嵌套层次管理作业。 ```python # 示例代码片段展示部分解法思路 def is_prime(n): """ 判断n是否为素数 """ if n <= 1: return False for i in range(2, int(n ** 0.5) + 1): if n % i == 0: return False return True num = 0 for i in range(1, 10000): num += str(i).count("1") if 2021 == num: print(f"The answer to the first question is {i}.") # 输出答案 break ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值