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

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 。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值