第十四届蓝桥杯三月真题刷题训练——第 5 天(3.8)

serein_2216 2023-03-08 10:54:07

数的分解

暴力,求出 [1,2019]不包含2和4的数字,存储到集合中,再三层循环遍历,求出满足三数之和为2019的个数

import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;

// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    static int result = 0;
    public static void main(String[] args) {
        // List<Integer> list = new ArrayList<>();
        // for(int i = 1; i <= 2019; i++) {
        //   if(!isContain(i)) {
        //     list.add(i);
        //   }
        // }
        // int size = list.size();
        // for(int i = 0; i < size - 2; i++) {
        //     for(int j = i + 1; j < size - 1; j++) {
        //         for(int k = j + 1; k < size; k++) {
        //             if(list.get(i) + list.get(j) + list.get(k) == 2019) {
        //                 result++;
        //             }
        //         }
        //     }
        // }
        System.out.print(40785);
    }
}

猜生日

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        int year = 2012;
        int month = 3;
        int day = 12;
        for(int i = 19480612; ; i++) {
          // 8位数能整除年、月、日
          if(i % year == 0 && i % month == 0 && i % day == 0) {
            // 6月份出生
            int curMonth = i / 100 % 10; // 月份
            if(curMonth == 6) {
              System.out.print(i);
              break;
            }
          }
        }
    }
}

成绩统计

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        // 统计及格 和 优秀个数,然后和总数做除法运算
        int n = scan.nextInt();
        int normal = 0; // 及格
        int good = 0; // 优秀
        for(int i = 0; i < n; i++) {
          int tmp = scan.nextInt();
          if(tmp >= 60) {
            normal++;
            if(tmp >= 85) {
              good++;
            }
          }
        }
        // Math.round(double num) : 四舍五入,返回long类型
        int finalNormal = (int) Math.round(normal * 1.0 / n * 100); 
        int finalGood = (int) Math.round(good * 1.0 / n * 100);
        System.out.println(finalNormal + "%");
        System.out.println(finalGood + "%");
        
        scan.close();
    }
}

最大和

记忆化搜索过不了 ?😫😫😫

动态规划:dp[i] : 走到 第i格 的最大总分值
状态转移方程:dp[i] = Math.max(dp[i], dp[j] + nums[i]), j为i之前的格子

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

// 1:无需package
// 2: 类名必须Main, 不可修改

// 质因数:能够整除给定正整数的质数
public class Main {
    public static int INF = Integer.MIN_VALUE;
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        int n = scan.nextInt();
        int[] nums = new int[n + 1];
        for(int i = 1; i <= n; i++) {
          nums[i] = scan.nextInt();
        }

        int[] dp = new int[n + 1];
        Arrays.fill(dp, INF);
        dp[1] = nums[1];

        for(int i = 1; i <= n; i++) {
          int right = minZhiElement(n - i);
          // j <= n防止越界
          for(int j = i + 1; j <= i + right && j <= n; j++) {
            dp[j] = Math.max(dp[j], dp[i] + nums[j]);
          }
        }

        System.out.print(dp[n]);
        scan.close();
    }
    // 最小质因子
    public static int minZhiElement(int num) {
      int result = 1;
      for(int i = 2; i <= num; i++) {
        if(num % i == 0 && isZhiShu(i)) {
          result = i;
          break;
        }
      }
      return result;
    }
    // 质数
    public static boolean isZhiShu(int num) {
      for(int i = 2; i < num; i++) {
        if(num % i == 0) {
          return false;
        }
      }
      return true;
    }
}
...全文
17 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

50,781

社区成员

发帖
与我相关
我的任务
社区描述
和众多高校算法内卷分子,一起学习和交流算法那。浓郁的算法交流氛围,拒绝躺平,有效内卷。加入我们,私信我拉你入核心内卷群。
算法数据结构leetcode 个人社区
社区管理员
  • 执 梗
  • Dream-Y.ocean
  • ღCauchyོꦿ࿐
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

 刷题!

试试用AI创作助手写篇文章吧