【编程题目 |100分】数字涂色【2022 Q2 考试题】


时间限制:C/C++ 1秒,其他语言 2秒

空间限制:C/C++262144K,其他语言524288K

64bit IO Format:%lld


本题可使用本地IDE编码,不能使用本地已有代码,无跳出限制,

编码后请点击”保存并调试“按钮进行代码提交。


题目描述

数字涂色

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

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

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

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

输入描述

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

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

输出描述

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

示例1 输入输出示例仅供调试,后台判题数据一般不包含示例

输入

3

2 4 6

输出

1

说明

所有数都能被2整除


代码实现


C++解法一


#include <bits/stdc++.h>

using namespace std;

void Split(string input, vector<int> &output, char patten)
{
    string one_word;
    int j = 0;
    input += patten;
    for (int i = 0; i < input.size(); i++) {
        if (input[i] == patten) {
            one_word = input.substr(j, i - j);
            output.push_back(stoi(one_word));
            one_word.clear();
            j = i + 1;
        }
    }
}

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

C++解法二


#include<bits/stdc++.h>

using namespace std;

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

JAVA解法一


import java.util.*;

public class Main {

    static int minType = 0;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int maxLen = Integer.parseInt(scanner.nextLine());
        String[] orgStrArr = scanner.nextLine().split("\\s");
        List<Integer> list = new ArrayList<>();

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

JAVA解法二


import java.util.*;
import java.util.stream.Collectors;

public class Main {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Map<Integer, List<Integer>> result = new HashMap<>();
        List<Integer> numList = new ArrayList<>();
        while (input.hasNext()) {
            int N = input.nextInt();

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

JAVA解法三


import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextInt()) {
            int n = sc.nextInt();
            int[] array = new int[n];
            for (int i = 0; i < n; i++) {
                array[i] = sc.nextInt();
            }

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

JavaScript解法一


let n = Number(readLine()); 
let numList = readLine().split(" ").map(Number);

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

JavaScript解法二


剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

Python解法一


剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

Python解法二


n = int(input())
nums = list(map(int, input().split()))

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

Python解法三


while 1:
    try:
        _ = input()
        nums = list(map(int, input().split()))

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看