第十四届蓝桥杯大赛——真题训练第9天

目录

第一题:不同子串

题目描述

运行限制

题目分析

题目代码

第二题:单词分析 

题目描述

输入描述

输出描述

输入输出样例

运行限制

题目分析

题目代码

 第三题:纸张尺寸

问题描述

输入格式

输出格式

样例输入1

样例输出1

样例输入 2

样例输出 2

运行限制

题目代码


第一题:不同子串

题目描述

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

一个字符串的非空子串是指字符串中长度至少为 11 的连续的一段字符组成的串。例如,字符串 aaab 有非空子串 a, b, aa, ab, aaa, aab, aaab,一共 77 个。注意在计算时,只算本质不同的串的个数。

请问,字符串 01001100010100010100110001010001 有多少个不同的非空子串?

运行限制

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

题目分析

先分割字符串再添加的hashset集合中(集合中的元素不重复)

题目代码

import java.util.HashSet;

public class 不同子串 {
    public static void main(String[] args) {
        HashSet<String> strings = new HashSet<>();
        String s="0100110001010001";
        for (int i = 0; i < s.length(); i++) {
            for (int j = i+1; j <= s.length(); j++) {
                String temp = s.substring(i,j);
                strings.add(temp);
            }
        }
        System.out.println(strings.size());
    }
}

第二题:单词分析 

题目描述

小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。

现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。

输入描述

输入一行包含一个单词,单词只由小写英文字母组成。

对于所有的评测用例,输入的单词长度不超过 1000。

输出描述

输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。

第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。

输入输出样例

示例 1

输入

lanqiao

输出

a
2

示例 2

输入

longlonglongistoolong

输出

o
6

运行限制

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

题目分析

注意这题要先将数组复制再在原数组上排序 

题目代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class 单词分析 {
    public static void main(String[] args) throws IOException {
        BufferedReader ins = new BufferedReader(new InputStreamReader(System.in));
        char[] chars = ins.readLine().toCharArray();
        int[] arr = new int[26];
        for (int i = 0; i < chars.length; i++) {
            arr[chars[i]-'a']++;
        }
        int[] arr2 = Arrays.copyOf(arr, 26);
        Arrays.sort(arr);
        int max = arr[25];
        for (int i = 0; i < arr.length; i++) {
            if (arr2[i]==max){
                System.out.println((char)(i+'a'));
                System.out.println(max);
                break;
            }
        }
    }
}

 第三题:纸张尺寸

问题描述

在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm ×× 841mm, 将 A0 纸 沿长边对折后为 A1 纸, 大小为 841mm ×× 594mm, 在对折的过程中长度直接取 下整 (实际裁剪时可能有损耗)。将 A1 纸沿长边对折后为 A2 纸, 依此类推。

输入纸张的名称, 请输出纸张的大小。

输入格式

输入一行包含一个字符串表示纸张的名称, 该名称一定是 A0、A1、A2、 A3、A4、A5、A6、A7、A8、A9 之一。

输出格式

输出两行,每行包含一个整数,依次表示长边和短边的长度。

样例输入1

A0

样例输出1

1189
841

样例输入 2

A1

样例输出 2

841
594

运行限制

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

题目代码

import java.util.Scanner;

public class 纸张尺寸 {
    public static void main(String[] args) {
        int cd = 1189;
        int kd = 841;
        Scanner sca = new Scanner(System.in);
        String[] split = sca.next().split("");
        int a = Integer.parseInt(split[1]);
        for (int i = 0; i < a; i++) {
            int max = Math.max(cd, kd);
            if (max == cd) {
                cd = cd / 2;
            } else
                kd = kd / 2;
        }
        System.out.println(Math.max(cd,kd));
        System.out.println(Math.min(cd,kd));
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_61082895/article/details/129798934
今日推荐