news 2026/4/29 16:27:01

【牛客网-小红的k次方】:避免大数问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【牛客网-小红的k次方】:避免大数问题

题目描述

小红拿到了一个长为 n 的数组 a,定义数组中所有元素的乘积为 x。小红想知道,最大的满足 x 是 30 的 k 次方的倍数(形式化的,x \mod 30^k = 0)的 k 是多少?

题目链接:小红的k次方_牛客题霸_牛客网

输入格式

  • 第一行输入一个整数 n (1≦n≦2×10^5)

  • 第二行输入 n 个整数 ai (1≦ai≦10^9)

输出格式

  • 输出一个整数,代表最大的 k

示例

输入

4

30 15 2 7

输出

2

问题分析

  1. 数据规模大:n 最大可达2×10^5 ,aᵢ 最大可达10^9

  2. 乘积极大:直接计算所有数的乘积会得到天文数字,远超任何数据类型的范围

  3. 需要高效算法:必须在 O(n) 或 O(n log n) 时间内解决问题

解题思路

第一步:数学转化

30 的质因数分解:

30=2×3×530=2×3×5

30 的 k 次方:

30^k=(2×3×5)^k=2^k×3^k×5^k

第二步:整除条件分析

设数组所有元素的乘积为 x,要使 x 能被 30^k 整除,即:

xmod 30^k=0

这意味着:

  1. x 必须包含至少 k 个因子 2

  2. x 必须包含至少 k 个因子 3

  3. x 必须包含至少 k 个因子 5

第三步:得出关键结论

设数组所有数中:

  • 因子 2 的总个数为 cnt_2

  • 因子 3 的总个数为 cnt_3

  • 因子 5 的总个数为 cnt_5

那么最大的 k 满足:

k≤cnt2 , k≤cnt3 , k≤cnt5

因此:

max k = min⁡(cnt2,cnt3,cnt5)

第四步:算法设计

基于以上分析,我们不需要计算巨大的乘积 x,只需:

  1. 遍历数组中的每个数

  2. 统计每个数中因子 2、3、5 的个数

  3. 累加得到总个数

  4. 取三个总个数的最小值

代码实现

python

n=int(input()) arr=list(map(int,input().split())) a,b,c=0,0,0 for num in arr: while num%2==0: a+=1 num//=2 while num%3==0: b+=1 num//=3 while num%5==0: c+=1 num//=5 k=min(a,b,c) print(k)

复杂度分析

时间复杂度

  • 每个数需要被2、3、5整除若干次

  • 对于每个数,循环次数最多为 log2 ai + log3 ai + log5 ai

  • 总时间复杂度:O(n × log(max(a_i)))

  • 对于 n (1≦n≦2×10^5),完全可行

空间复杂度

  • 只需常数空间存储计数:O(1)

错误反思

错误1:直接计算乘积

问题:乘积 x 可能达到(10⁹)^{2×10⁵} = 10^{9 × 2×10⁵} = 10^{1.8×10⁶},远超任何数据类型范围。

错误2:二分查找法

虽然理论上可以用二分查找 k,但需要计算 30^k 和判断整除关系,同样面临大数问题,且效率不如直接统计。

总结

本题的核心在于:

  1. 数学转化:将整除问题转化为质因数统计问题

  2. 避免大数运算:通过统计因子个数代替实际计算乘积

  3. 理解整除的本质:a 整除 b 意味着 a 的所有质因子在 b 中都以足够的幂次存在

这种"避开直接计算,转为统计特征"的思路在算法竞赛中非常常见,特别是在处理大数、乘积、最大公约数等问题时非常有用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 16:25:53

共生与赋能:产品与运营的一体化逻辑——以AI智能名片链动2+1模式S2B2C商城系统为例

摘要 在数字化商业快速迭代的当下,AI智能名片链动21模式S2B2C商城系统作为融合技术赋能与模式创新的典型载体,其发展实践深刻印证了产品与运营的共生关系。本文基于“劣质产品无运营可救、优质产品需运营赋能”两大核心认知,结合该商城系统的…

作者头像 李华
网站建设 2026/4/29 14:59:35

从桌面到产线:工业级3D打印设备如何重塑现代制造流程

宝鹿车业的生产车间里,一台不起眼的设备正安静运行,而它旁边的白板上记录着令人惊讶的数字——30%的成本降低,以及从设计到验证的时间缩短了一半。 当设备指示灯由蓝变绿,工程师熟练地取出刚完成打印的汽车零部件原型。这个曾经需…

作者头像 李华
网站建设 2026/4/28 18:25:39

小白到精通:一文搞懂大模型、AIGC、RAG、Agent和MCP的关系

文章介绍了大语言模型(LLM)及相关技术,包括AIGC(单模态和多模态)、RAG技术(解决实时性问题)、Function Calling(赋予工具调用能力)、智能体Agent(实现思考规划决策执行闭环),以及MCP协议(作为AI"USB-C接口",解决模型与外部工具集成…

作者头像 李华
网站建设 2026/4/28 7:38:39

STM32 SPI读取写入W25Q64JVSSIQ

w25q64.h #ifndef __W25Q64_H #define __W25Q64_H#include "main.h" #include "spi.h"// 引脚定义 #define W25Q64_CS_PIN GPIO_PIN_15 #define W25Q64_CS_PORT GPIOA// W25Q64指令集 #define W25Q64_WRITE_ENABLE 0x06 #define W25Q64_WRI…

作者头像 李华
网站建设 2026/4/28 12:31:24

Java程序员必备并发知识如何高效学习?

有出去面试的朋友肯定深有感受,像我们刚入行那会面试的加分项现在卷得已经成为了面试的基础题(手动狗头)。其中最典型的就属这个Java并发编程了。之前一般只有大厂才会有高并发编程相关的面试内容,但现在只要你入了Java行业就会涉…

作者头像 李华
网站建设 2026/4/28 12:29:55

系统可视化与配置化控制的实现经验与教训

系统可视化与配置化控制的实现经验与教训 关键词:系统可视化监控、配置化控制、业务大盘设计、线上事故应急方案、高可控系统架构 刚入大厂那几年,我一直有个错觉: 只要代码写得足够严谨,逻辑足够完善,系统就不会出大问题。 直到后来亲手接过一个线上资金系统,再经历过几…

作者头像 李华