news 2026/6/10 18:16:39

(新卷,100分)- 数字涂色(Java JS Python C)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
(新卷,100分)- 数字涂色(Java JS Python C)

(新卷,100分)- 数字涂色(Java & JS & Python & C)

题目描述

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

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

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

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

输入描述

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

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

输出描述

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

用例
输入

3
2 4 6

输出1
说明所有数都能被2整除
输入4
2 3 4 9
输出2
说明2与4涂一种颜色,4能被2整除;3与9涂另一种颜色,9能被3整除。不能4个数涂同一个颜色,因为3与9不能被2整除。所以最少的颜色是两种。
题目解析

简单的逻辑题,题目要求:“同种颜色的所有数都可以被这种颜色中最小的那个数整除”。

因此我们可以直接将输入数列进行升序排序,则数列从左到右,元素依次增大,我们每次取最左边的数arr[i],然后遍历它后面的所有数arr[j]去除它,若可以整除,则为一种颜色,若不可以整除,则为不同颜色。

本题难点主要在于,如何标记一个元素已经涂色了,我这里直接定义了一个长度和输入数列arr相同的数组color,color所有元素默认未初始化,一旦arr[j]可以整除arr[i],则color[j] = true。

Java算法源码
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = Integer.parseInt(sc.nextLine()); int[] arr = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray(); System.out.println(getResult(n, arr)); } public static int getResult(int n, int[] arr) { Arrays.sort(arr); if (arr[0] == 1) { return 1; } boolean[] color = new boolean[n]; int count = 0; for (int i = 0; i < n; i++) { if (color[i]) continue; color[i] = true; for (int j = i + 1; j < n; j++) { if (!color[j] && arr[j] % arr[i] == 0) { color[j] = true; } } count++; } return count; } }
JS算法源码
/* JavaScript Node ACM模式 控制台输入获取 */ const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); const lines = []; rl.on("line", (line) => { lines.push(line); if (lines.length === 2) { let n = parseInt(lines[0]); let arr = lines[1].split(" ").slice(0, n); console.log(getMinColorCount(arr)); lines.length = 0; } }); function getMinColorCount(arr) { arr.sort((a, b) => a - b); if (arr[0] === 1) { return 1; } let color = new Array(arr.length); let count = 0; for (let i = 0; i < arr.length; i++) { if (color[i]) continue; color[i] = true; for (let j = i + 1; j < arr.length; j++) { if (!color[j] && arr[j] % arr[i] === 0) { color[j] = true; } } count++; } return count; }
Python算法源码
# 输入获取 n = int(input()) arr = list(map(int, input().split())) # 算法入口 def getResult(): arr.sort() if arr[0] == 1: return 1 color = [False]*n count = 0 for i in range(n): if color[i]: continue color[i] = True for j in range(i+1, n): if not color[j] and arr[j] % arr[i] == 0: color[j] = True count += 1 return count # 调用算法 print(getResult())
C算法源码
#include <stdio.h> #include <stdlib.h> int getResult(int nums[], int nums_size); int cmp(const void* a, const void* b) { return (*(int*) a) - (*(int*) b); } int main() { int n; scanf("%d", &n); int nums[n]; for(int i=0; i<n; i++) { scanf("%d", &nums[i]); } printf("%d\n", getResult(nums, n)); return 0; } int getResult(int nums[], int nums_size) { qsort(nums, nums_size, sizeof(int), cmp); if(nums[0] == 1) { return 1; } int* color = (int*) calloc(nums_size, sizeof(int)); int count = 0; for(int i=0; i<nums_size; i++) { if(color[i]) continue; color[i] = 1; for(int j=i+1; j<nums_size; j++) { if(!color[j] && nums[j] % nums[i] == 0) { color[j] = 1; } } count++; } return count; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 14:14:35

Prime Intellect开源INTELLECT-3:性能超越多数前沿大模型

这项由Prime Intellect团队于2025年12月发表的研究报告&#xff0c;详细介绍了他们开发的INTELLECT-3模型及其完整的开源训练基础设施。这个研究团队包括了来自多个机构的研究人员&#xff0c;包括Mika Senghaas、Fares Obeid、Sami Jaghouar等十多位专家。研究成果发表在arXiv…

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

基于spark的西南天气数据的分析与应用(毕设源码+文档)

背景 本课题聚焦西南地区天气数据的深度挖掘与价值转化需求&#xff0c;针对当前西南区域气象数据体量庞大、处理效率低下、分析维度单一、数据应用场景不足等痛点&#xff0c;开展基于Spark的西南天气数据的分析与应用研究。研究以Spark为核心大数据处理框架&#xff0c;结合气…

作者头像 李华
网站建设 2026/6/10 14:13:40

基于SpringBoot框架社区老年人健康杂志阅读分享管理系统(毕设源码+文档)

课题说明本课题聚焦社区老年人健康知识获取与交流分享的核心需求&#xff0c;针对当前老年群体健康读物适配性不足、阅读资源分散、交流渠道匮乏、健康知识传播效率偏低等痛点&#xff0c;设计开发基于SpringBoot框架的社区老年人健康杂志阅读分享管理系统。系统以SpringBoot为…

作者头像 李华
网站建设 2026/6/10 9:59:10

基于SpringBoot特色农产品销售系统(毕设源码+文档)

课题说明本课题聚焦特色农产品产销对接的数字化需求&#xff0c;针对当前特色农产品流通渠道狭窄、品牌推广不足、供需信息不对称、交易流程不规范等痛点&#xff0c;设计开发基于SpringBoot的特色农产品销售系统。系统以SpringBoot为核心后端框架&#xff0c;结合前端主流开发…

作者头像 李华
网站建设 2026/6/10 10:02:33

腾讯三面:100万 QPS 的秒杀,你用 Redis 做限流?CPU 炸了谁负责?

写在开头&#xff1a; 上周跟一个想跳槽腾讯的朋友吃饭&#xff0c;他一脸郁闷。 三面的时候&#xff0c;面试官问了他一个经典的场景题&#xff1a;“双十一大促&#xff0c;某个爆款商品预计每秒有 100 万请求&#xff08;QPS&#xff09;&#xff0c;库存只有 100 个。请设…

作者头像 李华
网站建设 2026/6/10 10:05:16

【电动机】三相感应电动机TIM间接磁场定向控制IFOC研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…

作者头像 李华