news 2026/5/14 18:16:57

【牛客网-小红的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/5/10 4:30:37

亲身经历:XinServer 如何帮我快速交付项目

亲身经历:XinServer 如何帮我快速交付项目 兄弟们,不知道你们有没有经历过这种场景:产品经理或者客户那边需求催得紧,要一个带用户管理、权限控制、数据报表的后台,或者给App快速搞一套增删改查的接口。你作为前端或者…

作者头像 李华
网站建设 2026/5/10 0:34:09

GESP-C++考试(三级)考试重点 (附:【编程题模板】大全)

一、GESP-C考试(三级)考试重点1、C 三级考试的【官方定位】三级是从“语法”走向“算法”的第一关(1)官方目标总结一句话是:👉 能使用数组、字符串,配合枚举法和模拟法,解决实际问题…

作者头像 李华
网站建设 2026/5/9 2:16:10

红外遥控的价值回归——在智能时代的独特意义

随着蓝牙、WiFi、zigbee等无线技术的发展,智能家电逐渐成为市场主流,很多人认为红外遥控这种“老旧技术”已经过时,甚至很多新发布的手机也取消了红外发射模块。但实际上,红外遥控在智能时代依然有着不可替代的价值,它…

作者头像 李华
网站建设 2026/5/10 14:53:22

专用网络安全路由器是否比普通路由器更安全?

专用的网络安全路由器是否真的比普通路由器更安全? 我想很多用户都有这个问题,毕竟能更放心谁有甘于随大流呢? 本文,就为大家分享下,这专用网络安全路由器真的适用吗? 所谓专用网络安全路由器&#xff0c…

作者头像 李华
网站建设 2026/5/14 7:10:45

基于RK3568的YOLOv11模型端侧部署与性能调优完整指南

文章目录 【深度实战】RK3568平台YOLO11模型从零到部署完整指南 前言 技术架构概览 一、开发环境搭建 1.1 Anaconda环境配置 1.2 RKNN工具链安装 下载核心组件 安装依赖和工具包 1.3 PyTorch环境配置 二、数据集准备与标注 2.1 数据集结构设计 2.2 图像标注工具配置 标注操作流…

作者头像 李华
网站建设 2026/5/11 3:17:24

广州沙太路属于天河区吗?具体位置解析

广州沙太路是广州市内一条重要的交通干道,它位于天河区北部,连接着天河与白云两区。这条路对于经常往来于广州大道北、广州东站附近以及白云山周边区域的市民来说十分熟悉。了解沙太路的具体区划归属,有助于更好地规划出行和认识广州城市格局…

作者头像 李华