华为OD机考2025B卷 - 数字涂色(Java & Python& JS & C++ & C )

最新华为OD机试

真题目录:点击查看目录
华为OD面试真题精选:点击立即查看

2025华为od 机试2025B卷-华为机考OD2025年B卷

题目描述

疫情过后,希望小学终于又重新开学了,三年二班开学第一天的任务是将后面的黑板报重新制作。

黑板上已经写上了N个正整数,同学们需要给这每个数分别上一种颜色。

为了让黑板报既美观又有学习意义,老师要求同种颜色的所有数都可以被这种颜色中最小的那个数整除。

现在请你帮帮小朋友们,算算最少需要多少种颜色才能给这N个数进行上色。

输入描述

第一行有一个正整数N,其中。

第二行有N个int型数(保证输入数据在[1,100]范围中),表示黑板上各个正整数的值。

输出描述

输出只有一个整数,为最少需要的颜色种数。

示例1

输入

3
2 4 6

输出

3
2 4 6

说明

有数都能被2整除

示例2

输入

4
2 3 4 9

输出

2

说明

与4涂一种颜色,4能被2整除;3与9涂另一种颜色,9能被3整除。不能4个数涂同一个颜色,因为3与9不能被2整除。所以最少的颜色是两种。

解题思路

题目要求给黑板上的 N 个正整数 上色,具体的要求是:同种颜色的所有数都可以被这一颜色中最小的那个数整除

换句话说,如果我们为某个数字选择了一种颜色,那么所有和它涂同种颜色的数都应该是它的倍数。目标是找到最少的颜色种类来满足这个条件。

颜色分配逻辑:每个数字从最小开始,尝试加入已经存在的组中,只有当它无法整除任何一个已有组的最小数时,才新建一个组。这种策略确保了所有组中,数字都满足题目要求——同组内的所有数字都可以被该组的最小数整除。

可以分为以下几个步骤:

1. 输入数据并排序

  • 排序后的数组便于我们从最小的数字开始处理,因为最小数决定了它这一组的颜色。

2. 定义颜色数组

  • 创建一个数组 colors,用来存储已经作为组最小数的数字。
  • colorCount 用来统计已经使用了多少种颜色,即有多少个组。

3. 遍历每个数字,决定是否可以加入现有的颜色组

  • 遍历排序后的 numList 数组,对于每个数字 numList[i]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值