第十四届蓝桥杯冲刺打卡31天day12

文章包含了多个数学和算法问题,包括计算正整数末尾0的个数,寻找最大的超级质数,卡牌组合优化以凑出最多的完整套牌,以及棋盘染色问题,确定整个棋盘完成染色所需的时间。这些问题涉及到了整数处理、质数判断、动态规划等计算机科学概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、0的个数

问题描述

给定一个正整数 n ,请问 n 的十进制表示中末尾总共有几个 0 ?

输入格式

输入一行包含一个正整数 n。

输出格式

输出一个整数,表示答案。

样例输入

20220000

样例输出

4

评测用例规模与约定

对于所有评测用例,1 <= n <= 1000000000。

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

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int x = scan.nextInt();
        String str = String.valueOf(x);
        int sum = 0;
        for(int i = str.length()-1;i>=0;i--){
          if((char)str.charAt(i)!='0'){
            break;
          }
          if((char)str.charAt(i)=='0'){
          sum++;
          }
          
        }
        System.out.println(sum);
    }
}

2、超级质数

问题描述

如果一个质数 P 的每位数字都是质数, 而且每两个相邻的数字组成的两位 数是质数, 而且每三位相邻的数字组成的三位数是质数, 依次类推, 如果每相 邻的 k 位数字组成的 k 位数都是质数, 则 P 称为超级质数。

如果把超级质数 P 看成一个字符串, 则这个超级质数的每个子串都是质 数。

例如, 53 是一个超级质数。

请问, 最大的超级质数是多少?

答案提交

这是一道结果填空的题, 你只需要算出结果后提交即可。本题的结果为一 个整数, 在提交答案时只填写这个整数, 填写多余的内容将无法得分。

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

public class Main {
  static int max = 0;
    public static void main(String[] args) {
        for(int i = 2;i<=400;i++){
          if(unique(i)){
              max = i;
          }
        }
        System.out.println(max);
        
    }
    static boolean isPrime(int n){
      for(int i = 2;i<=n/2;i++){
        if(n%i==0){
          return false;
        }
      }
      return true;
    }
    static boolean unique(int n){
      if(!isPrime(n)){
        return false;
      }
      while(n>0){
        if(!isPrime(n%10)){
         return false;
        }
        n/=10;
      }
      return true;
    }
}

3、卡牌

问题描述

这天, 小明在整理他的卡牌。

他一共有 n 种卡牌, 第 i 种卡牌上印有正整数数 i(i∈[1,n]), 且第 i 种卡牌 现有 ai​ 张。

而如果有 n 张卡牌, 其中每种卡牌各一张, 那么这 n 张卡牌可以被称为一 套牌。小明为了凑出尽可能多套牌, 拿出了 m 张空白牌, 他可以在上面写上数 i, 将其当做第 i 种牌来凑出套牌。然而小明觉得手写的牌不太美观, 决定第 i 种牌最多手写 bi​ 张。

请问小明最多能凑出多少套牌?

输入格式

输入共 3 行, 第一行为两个正整数 n,m 。

第二行为 n 个正整数 a1​,a2​,…,an​ 。

第三行为 n 个正整数 b1​,b2​,…,bn​ 。

输出格式

一行, 一个整数表示答案。

样例输入

4 5
1 2 3 4
5 5 5 5

样例输出

3

样例说明

这 5 张空白牌中, 拿 2 张写 1 , 拿 1 张写 2 , 这样每种牌的牌数就变为了 3,3,3,4, 可以凑出 3 套牌, 剩下 2 张空白牌不能再帮助小明凑出一套。

评测用例规模与约定

对于 30%30% 的数据, 保证 n≤2000;

对于 100%100% 的数据, 保证 n≤2×105;ai​,bi​≤2n;m≤n2 。

 

import java.util.*;
import java.io.*;
public class 卡牌 {
  static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  static PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
  static int n;
  static long m;
  static int a[];
  static int b[];
    public static void main(String[] args) throws IOException{
       String []str = in.readLine().split(" ");
       n = Integer.parseInt(str[0]);
       m = Long.parseLong(str[1]);
       a = new int[n];
       b = new int[n];
       String[] s = in.readLine().split(" ");
       for(int i = 0;i<n;i++){
         a[i] = Integer.parseInt(s[i]);
       }
       String[] st = in.readLine().split(" ");
       for(int i = 0;i<n;i++){
         b[i] = Integer.parseInt(st[i]);
       }
       int l = 0,r = n;
       while(l<r){
         int mid = (l+r+1)>>1;//防止死循环,答案目标在右边
         if(check(mid)){
           l = mid;
         }else{
           r = mid-1;
         }  
       }
       out.println(l);
       out.flush();
       in.close();
    }
    static boolean check(int mid){
      long value = m;
      for(int i=0;i<n;i++){
         if(a[i]>=mid){//无需补充卡牌,还有余量,让mid继续变大
           continue;
         }
         if(a[i]+b[i]<mid){//当前卡牌补充最大数量的卡牌依然不满足,那么说明mid不对,直接返回false,继续让mid减小
           return false;
         }
         if(value>=mid-a[i]){//所有类型的牌如果可以用空白牌(value)补充完,那么就返回true,如果当前有一种牌不能补充完,则返回false。
           value-=(mid-a[i]);//vaule将为了补充所用的牌去掉
         }else{
           return false;
         }
      }
      return true;

    }
}

4、染色时间

问题描述

小蓝有一个 n 行 m 列的白色棋盘, 棋盘的每一个方格都可以被染成彩色。

每个方格有一个染色时间 tij​, 不同方格的染色时间可能不同。如果一个方 格被触发了染色, 这个方格就会在 tij​ 秒之后变成彩色, 然后将自己上下左右四 个方向相邻的方格触发染色。每个方格只能被触发染色一次, 第一次触发之后 的触发为无效触发。

给定每个方格的染色时间, 在时刻 0 触发第一行第一列的方格染色, 请问 多长时间后整个棋盘完成染色。

输入格式

输入的第一行包含两个整数 n,m, 分别表示棋盘的行数和列数。

接下来 n 行, 每行 m 个正整数, 相邻的整数之间用一个空格分隔, 表示每 个方格的染色时间。该部分的第 i 行第 j 个整数表示 tij​, 即第 i 行第 j 列的方 格的染色时间。

输出格式

输出一行包含一个整数, 表示整个棋盘完成染色的时间。

样例输入


2 3

1 2 3

4 5 6

样例输出


12

评测用例规模与约定

对于 3030 的评测用例, 1≤n,m≤10 。

对于 6060 的评测用例,1≤n,m≤50 。

对于所有评测用例, 1≤n,m≤500,1≤tij​≤1000 。

<think>嗯,用户想要了解第十四届蓝桥杯C组国赛的Python试题和备考资料。首先,我需要确认是否有公开的第十四届C组国赛的真题和解析。根据提供的引用,引用[1]提到的是2020年的省赛题目,引用[2]是关于2023年12月的Python等级考试,引用[3]讨论的是2024年的Scratch省赛。看起来这些引用中没有直接提到第十四届的国赛内容,可能需要依赖其他信息或者提醒用户官方资料的重要性。 接下来,用户可能想知道如何备考,比如需要哪些知识点,或者有没有推荐的练习方法。通常蓝桥杯的Python题目会涉及算法、数据结构、编程题等,可能需要掌握基本的输入输出处理、排序、搜索算法,以及动态规划等内容。 另外,用户提到的是C组国赛,可能是指青少年组的某个分组,需要确认C组对应的难度和考察范围。根据以往经验,C组可能属于初级或中级组别,题目难度适中,但国赛级别会比省赛更难一些。 需要提醒用户,真题可能没有完全公开,但可以参考历届省赛和国赛的其他组别题目来练习,因为考点会有重叠。此外,官方发布的考纲和样题是非常重要的备考资料,应该优先参考。 在回答时,要确保建议具体,比如推荐刷题网站、官方资料获取途径、常见考点等。同时,要避免提供不存在的资源链接,而是指导用户如何查找可靠资料,比如蓝桥杯官网、官方合作平台或可信的教育博客。 最后,可能需要生成相关问题,帮助用户进一步深入备考,比如如何高效刷题、时间管理策略、常见错误避免等。这些问题需要贴近用户的实际需求,帮助他们系统化地准备比赛。</think>### 第十四届蓝桥杯C组国赛Python备考指南 #### 一、真题特点与备考方向 1. **算法与数据结构** 蓝桥杯国赛题目侧重算法实现能力,需掌握以下核心内容: - 基础算法:排序(快速排序、归并排序)、二分查找、递归与回溯 - 动态规划:背包问题、路径规划(如$dp[i][j] = \max(dp[i-1][j], dp[i][j-w] + v)$) - 数据结构:队列、栈、树(二叉树遍历)、图的邻接表表示 2. **编程实践** 参考往届真题中的高频考点[^1]: - **字符串处理**:正则表达式、子串匹配 - **数学建模**:几何计算(如海伦公式$S = \sqrt{p(p-a)(p-b)(p-c)}$)、素数筛法 - **文件操作**:CSV/文本文件读写(需熟练使用`with open`语句) #### 二、真题解析示例(参考往届题型) **例题**:给定非负整数数组,计算所有子序列之和的异或值。 **解析思路**: 1. 遍历所有子序列组合,使用位运算优化 2. 时间复杂度分析:若数组长度$n$,子序列数量为$2^n$,需优化为$O(n)$ **代码片段**: ```python def xor_subarray_sums(arr): result = 0 for num in arr: result ^= num * (1 << (len(arr) - 1)) return result ``` #### 三、备考资料推荐 1. **官方资源** - 蓝桥杯官网发布的大纲与样题(含C组国赛历史题目) - 官方合作平台“蓝桥云课”的专题训练(搜索“Python国赛冲刺”) 2. **参考书籍** - 《算法竞赛入门经典(Python版)》:涵盖基础算法与竞赛技巧 - 《Python编程从入门到实践》第2版:强化编程实践能力 3. **在线练习平台** - 力扣(LeetCode)「蓝桥杯专题」 - 洛谷「官方合作题库」 #### 四、应试技巧 1. **时间分配** - 编程题(60分钟):优先完成有明确思路的题目 - 调试环节(20分钟):使用`print`定位边界条件错误 2. **代码规范** - 变量命名清晰(如用`max_value`代替`a`) - 添加关键注释(如动态规划状态转移逻辑)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值