质数拆分+明明的随机数(蓝桥杯JAVA解法)

简介: 质数拆分+明明的随机数(蓝桥杯JAVA解法)

 质数拆分:用户登录

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

将 2019 拆分为若干个两两不同的质数之和,一共有多少种不同的方法?

注意交换顺序视为同一种方法,例如 2+2017=2019 与 2017+2=2019 视为同一种方法。

运行限制

    • 最大运行时间:1s
    • 最大运行内存: 128M

    代码:

    import java.util.Scanner;
    // 1:无需package
    // 2: 类名必须Main, 不可修改
    public class 质数拆分 {
        static boolean st[] = new boolean[2020];
        static int primes[] = new int[2020];
        static int cnt = 1;
        static long[][] dp;
        public static void main(String[] args) {
            //筛质数
            for (int i = 2; i <= 2019; i++) {
                if (!st[i]) {
                    primes[cnt++] = i;
                    for (int j = i + i; j <= 2019; j += i) {
                        st[j] = true;
                    }
                }
            }
            dp = new long[cnt][2020];
            dp[0][0] = 1;
            for (int i = 1; i < cnt; i++) {
                for (int j = 0; j <= 2019; j++) {
                    if(j < primes[i]){ //当前背包能够放得下这个素数大小吗?
                        dp[i][j] = dp[i-1][j];
                    }else{
                        dp[i][j] = dp[i-1][j]+dp[i-1][j-primes[i]];
                    }
                }
            }
            System.out.println(dp[cnt-1][2019]);
        }
    }

    image.gif


    明明的随机数:用户登录

    题目描述

    明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N 个 1 到 1000 之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。

    输入描述

    第 1 行为 1 个正整数,表示所生成的随机数的个数:N。

    第 2 行有 N 个用空格隔开的正整数,为所产生的随机数。

    输出描述

    输出 2 行,第 1 行为 1 个正整数 M,表示不相同的随机数的个数。

    第 2 行为 M 个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

    输入输出样例

    示例 1

    输入

    10
    20 40 32 67 40 20 89 300 400 15

    image.gif

    输出

    8
    15 20 32 40 67 89 300 400

    image.gif

    运行限制

      • 最大运行时间:1s
      • 最大运行内存: 128M

      代码:

      import java.util.ArrayList;
      import java.util.Arrays;
      import java.util.Collection;
      import java.util.Collections;
      import java.util.HashSet;
      import java.util.Scanner;
      import java.util.stream.Collectors;
      public class 明明的随机数 {
          public static void main(String[] args) {
              // TODO Auto-generated method stub
              Scanner sc = new Scanner(System.in);
              int n = sc.nextInt();
              int a[] = new int[n];
              for (int i = 0; i < a.length; i++) {
                  a[i] = sc.nextInt();
              }
              HashSet<Integer> set = new HashSet<Integer>();
              for (int i = 0; i < a.length; i++) {
                  set.add(a[i]);
              }
              System.out.println(set.size());
              ArrayList<Integer>list = new ArrayList<Integer>(set);
              Collections.sort(list);
              for (Integer i: list) {
                  System.out.print(i+" ");
              }
          }
      }

      image.gif


      相关文章
      |
      29天前
      |
      Java 编译器 程序员
      Java面试高频题:用最优解法算出2乘以8!
      本文探讨了面试中一个看似简单的数学问题——如何高效计算2×8。从直接使用乘法、位运算优化、编译器优化、加法实现到大整数场景下的处理,全面解析了不同方法的原理和适用场景,帮助读者深入理解计算效率优化的重要性。
      34 6
      |
      5月前
      |
      Java 索引
      Java实现扑克牌游戏 | 随机发牌 ( 过程拆分详解+完整代码 )
      Java实现扑克牌游戏 | 随机发牌 ( 过程拆分详解+完整代码 )
      127 3
      |
      4月前
      |
      Java
      Java系类 之 生成随机数(random()和Random类)
      这篇文章介绍了Java中生成随机数的两种方法:使用`Math.random()`方法和`Random`类的实例方法,并提供了示例代码展示如何使用这些方法生成特定范围或特定条件下的随机数。
      |
      4月前
      |
      算法 Java
      LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
      LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
      57 6
      |
      4月前
      |
      人工智能 算法 Java
      LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
      LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
      54 1
      |
      4月前
      |
      存储 算法 Java
      LeetCode经典算法题:预测赢家+香槟塔java解法
      LeetCode经典算法题:预测赢家+香槟塔java解法
      65 1
      |
      4月前
      |
      算法 Java
      LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
      LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
      56 0
      |
      4月前
      |
      存储 算法 Java
      LeetCode初级算法题:两数之和+斐波拉契数列多种java解法
      LeetCode初级算法题:两数之和+斐波拉契数列多种java解法
      45 0
      |
      6月前
      |
      Java
      2023届蓝桥杯大赛软件类国赛Java大学B组 互质 数论
      2023届蓝桥杯大赛软件类国赛Java大学B组 互质 数论
      40 1
      |
      5月前
      |
      监控 Java API
      Java面试题:解释微服务架构的概念及其优缺点,讨论微服务拆分的原则。
      Java面试题:解释微服务架构的概念及其优缺点,讨论微服务拆分的原则。
      86 0