Pat刷题真题乙级(4)

2023-11-08

前言

这个周末花了两天才写了五道题,嘿嘿!康康吧!

Pat乙级1013(组个最小数)

题目链接
题目描述:

给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:
给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。

现给定数字,请编写程序输出能够组成的最小的数。

输入描述:

每个输入包含1个测试用例。每个测试用例在一行中给出10个非负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间用一个空
格分隔。10个数字的总个数不超过50,且至少拥有1个非0的数字。

输出描述:

在一行中输出能够组成的最小的数。

输入例子:

2 2 0 0 0 3 0 0 1 0

输出例子:

10015558

分析
输入一串10个数字,依次从0到9,在0位输入2,就是有2个0,在1位置输入2,就是有两个1,以此类推。存入到一个字符串00115558,然后按最小排序输出。

ac代码为:

import java.util.Scanner;
public class Niuk1013 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int[] a = new int[10];
        String str = "",str2 = "";
        int b=0,c=0;
        for(int i=0;i<10;i++){
            a[i] = scan.nextInt();
        }
        for (int j=0;j<10;j++){
            if(a[j]==0){ }//如果输入的数为0,则继续
            else {
                for(int k=0;k<a[j];k++){
                    str =str+j;      //把数存进字符串里2 2 0 0 0 3 0 0 1 0
                    b++;          //统计有多少位数     00115558
                }
            }
        }
        //00225558 20025558
        for(int i=0;i<b;i++) {
            char ch = str.charAt(i);
            if(ch!='0'){
                str2 = str.charAt(i) + str.substring(0,i)+str.substring(i+1);
                break;
            }
        }
        System.out.println(str2);
    }
}

Pat乙级1014(科学计数法)

题目链接
题目描述:

科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[±][1-9]"."[0-9]+E[±][0-9]+,即数字的整数部分
只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出。

现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。

输入描述:

每个输入包含1个测试用例,即一个以科学计数法表示的实数A。该数字的存储长度不超过9999字节,且其指数的绝对值不超过9999。

输出描述:

对每个测试用例,在一行中按普通数字表示法输出A,并保证所有有效位都被保留,包括末尾的0。

输入例子:

+1.23400E-03

输出例子:

0.00123400

分析
首先先把E前后的字符存到字符串中,然后处理好正负号,理解前后正负号的差异,再进行做题。在字符串中插入字符,我用了StringBuilder。

ac代码为:

import java.util.Scanner;
public class Niuk1014 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
        String[] str2 = str.split("E");
        String str3 = "", str4 = "";
        char t = 0;
        //遍历E前面的
        for (int i = 0; i < str2[0].length(); i++) {
            char ch = str2[0].charAt(i);
            if (ch != '.' && ch != '+' && ch != '-') {
                str3 = str3 + ch;  //
            }
        }
        //遍历E后面的
        //+1.23400E-03   0.00123400
        //+1.23400E+03   123.400
        for (int i = 0; i < str2[1].length(); i++) {
            char ch2 = str2[1].charAt(i);
            if (ch2 != '+' && ch2 != '-') {
                str4 = str4 + ch2;
            } else t = ch2;
        }
        //-1.23400E-03  str3=-123400  -0.00123400
        int f = Integer.parseInt(str4);//E后面的数值
        char ch3 = str.charAt(0);//获取正负号
        boolean jud = true;
        if(ch3=='-')jud=false;//int a=0
            if (t == '+') {
                if (f < str3.length()) {
                    StringBuilder sb = new StringBuilder(str3);
                    sb.insert(f, ".");
                    str3= sb.toString();
                }
                else {
                    int x = f - str3.length()+1;
                    for (int i = 0; i < x; i++) {
                        str3 = str3 + "0";
                    }
                }

            }
            else if (t == '-') {
                for (int i = 0; i < f; i++) {
                    str3 = "0" + str3;
                }
                StringBuilder sb = new StringBuilder(str3);
                sb.insert(1, '.');
                str3=sb.toString();
        }
//jud==false;
        if(!jud)
        {str3="-"+str3;}
        System.out.println(str3);
    }
}

Pat乙级1017(打印沙漏)

题目链接
题目描述:

本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印

 *****
  ***
   *
  ***
 *****

所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递
增;首尾符号数相等。

给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。

输入描述:

输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。

输出描述:

首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。

输入例子:

19 *

输出例子:

*****
 ***
 *
 ***
*****
2

分析
作一个循环,符号相加如果大于输入的数值,则break,否则算出有多少层,和完整漏斗符号多少。三个for循环来输出上部分的符号和空格。

ac代码为:

import java.util.Scanner;
public class Niuk1017 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        String str = scan.next();
        int sum=-1,gip=0,b=0;
        for(int i=1;;i++){
            sum = sum+(i*2-1)*2;//从1加到两侧
            if(sum>n){
                break;
            }
            gip++;
            b=sum;
        }
        //上半部分有gip层
        //*****
        // ***
        //  *
        for(int i=gip;i>0;i--){
            //输出空隔
            for(int j=gip-i;j>0;j--){
                System.out.print(" ");
                //输出字符
            }
            for(int k=1;k<=2*i-1;k++){
                System.out.print(str);
            }
            System.out.println();
        }
        //下部分
        for(int i=2;i<=gip;i++){
            //输出空隔
            for(int j=gip-i;j>0;j--){
                System.out.print(" ");
                //输出字符
            }
            for(int k=1;k<=2*i-1;k++){
                System.out.print(str);
            }
            System.out.println();
        }
        System.out.print(n-b);
    }
}

Pat乙级1018(人口普查)

题目链接
题目描述:

某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。

这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200
岁的生日和未出生的生日都是不合理的,应该被过滤掉。

输入描述:

输入在第一行给出正整数N,取值在(0, 105];随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串)、以及
按“yyyy/mm/dd”(即年/月/日)格式给出的生日。题目保证最年长和最年轻的人没有并列。

输出描述:

在一行中顺序输出有效生日的个数、最年长人和最年轻人的姓名,其间以空格分隔。

输入例子:

5
John 2001/05/12
Tom 1814/09/06
Ann 2121/01/30
James 1814/09/05
Steve 1967/11/20

输出例子:

3 Tom John

分析
先存入合理人的信息,再从合理的人中判断最年长人和最年轻人。
ac代码为:

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Niuk1018 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        scan.nextLine();
        int flag=0;
        int max=1814, min =2014;
        String Maxname="",Minname="";
        for(int i=0;i<n;i++){
            String str = scan.nextLine();
            String[] str2 = str.split(" ");
            Map<String,String> map1=new HashMap<>();
            int a = Integer.parseInt(str2[1].substring(0,4));
            int b = Integer.parseInt(str2[1].substring(5,7));
            int c = Integer.parseInt(str2[1].substring(8));
            //判断有多少个人合理
            if(a>1814&&a<2014) {
                flag++;
                map1.put(str2[0],str2[1]);
            }else if(a==1814){
               if(b==9&&c>=6){flag++;map1.put(str2[0],str2[1]);}
               else if(b>9){flag++;map1.put(str2[0],str2[1]);}
            }else if(a==2014){
                if(b==9&&c<=6){flag++;map1.put(str2[0],str2[1]);}
                else if(b<9){flag++;map1.put(str2[0],str2[1]);}
            }
                for(String tmp:map1.keySet()){
                    int a2 = Integer.parseInt(map1.get(tmp).substring(0,4));
                    if(a2>=max){
                        max = a2;
                        Maxname = tmp;
                    }
                    if(a2<=min){
                        min = a2;
                        Minname = tmp;
                    }
                }
            }
        System.out.print(flag+" "+Minname+" "+Maxname);
        }
    }


Pat乙级1019(旧键盘)

题目链接
题目描述:

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出
肯定坏掉的那些键。

输入描述:

输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字母A-Z(包括大、小写)、数字0-9、
以及下划线“_”(代表空格)组成。题目保证2个字符串均非空。

输出描述:

按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有1个坏键。

输入例子:

7_This_is_a_test
_hs_s_a_es

输出例子:

7TI

分析
把实际输入的文字存到set()里面,去除重复的字符,把应该输入的文字和set里面的字符比较,再和list比较,list是用来存入坏掉键的字符。如果set里无,list里无,则存入list。(list可排序)
ac代码为:

import java.util.*;
public class Niuk1019 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine().toUpperCase();
        String str2 = scan.nextLine().toUpperCase();
        //7_This_is_a_test  a串 从a串中找到B串没有的字符。   并且按顺序找一次   list<>7 t i
        //_hs_s_a_essssssssssse        b串 set<> t2{_,h,s,a,e}
        List<String> list = new ArrayList<>();
        Set<String> set2=new HashSet<>();
        //7_This_is_a_test
        //第二个字符串
        for(int i=0;i<str2.length();i++){
            set2.add(str2.charAt(i)+"");
        }
        for(int i=0;i<str.length();i++){
            char ch = str.charAt(i);
            if(!set2.contains(ch+"")){
                if(!list.contains(ch+"")){
                list.add(ch+"");
            }
          }
        }
        for(String tmp:list) {
            System.out.print(tmp);
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pat刷题真题乙级(4) 的相关文章

  • Spring Batch 多线程 - 如何使每个线程读取唯一的记录?

    这个问题在很多论坛上都被问过很多次了 但我没有看到适合我的答案 我正在尝试在我的 Spring Batch 实现中实现多线程步骤 有一个包含 100k 条记录的临时表 想要在 10 个线程中处理它 每个线程的提交间隔为 300 因此在任何时
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • 从 127.0.0.1 到 2130706433,然后再返回

    使用标准 Java 库 从 IPV4 地址的点分字符串表示形式获取的最快方法是什么 127 0 0 1 到等效的整数表示 2130706433 相应地 反转所述操作的最快方法是什么 从整数开始2130706433到字符串表示形式 127 0
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • 加密 JBoss 配置中的敏感信息

    JBoss 中的标准数据源配置要求数据库用户的用户名和密码位于 xxx ds xml 文件中 如果我将数据源定义为 c3p0 mbean 我会遇到同样的问题 是否有标准方法来加密用户和密码 保存密钥的好地方是什么 这当然也与 tomcat
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • 获取 JVM 上所有引导类的列表?

    有一种方法叫做findBootstrapClass对于一个类加载器 如果它是引导的 则返回一个类 有没有办法找到类已经加载了 您可以尝试首先通过例如获取引导类加载器呼叫 ClassLoader bootstrapLoader ClassLo
  • 编译器抱怨“缺少返回语句”,即使不可能达到缺少返回语句的条件

    在下面的方法中 编译器抱怨缺少退货声明即使该方法只有一条路径 并且它包含一个return陈述 抑制错误需要另一个return陈述 public int foo if true return 5 鉴于Java编译器可以识别无限循环 https
  • 在 Maven 依赖项中指定 jar 和 test-jar 类型

    我有一个名为 commons 的项目 其中包含运行时和测试的常见内容 在主项目中 我添加了公共资源的依赖项
  • 当我从 Netbeans 创建 Derby 数据库时,它存储在哪里?

    当我从 netbeans 创建 Derby 数据库时 它存储在哪里 如何将它与项目的其余部分合并到一个文件夹中 右键单击Databases gt JavaDB in the Service查看并选择Properties This will
  • java.lang.IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置 - Similiar 不回答

    尝试学习 Selenium 我打开了类似的问题 但似乎没有任何帮助 我的代码 package seleniumPractice import org openqa selenium WebDriver import org openqa s
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List

随机推荐

  • 用户数据报UDP

    UDP概述 UDP 只在 IP 的数据报服务之上增加了很少一点的功能 即端口的功能和差错检测的功能 UDP 的主要特点 UDP 是无连接的 不需要建立连接 直接发送数据 发送完以后也不需要释放连接 UDP 使用尽最大努力交付 即不保证可靠交
  • 使用 MATLAB 绘制爱心:帮助你成功表白

    作者简介 人工智能专业本科在读 喜欢计算机与编程 写博客记录自己的学习历程 个人主页 小嗷犬的个人主页 个人网站 小嗷犬的技术小站 个人信条 为天地立心 为生民立命 为往圣继绝学 为万世开太平 本文目录 MATLAB 绘制爱心 方法一 方法
  • C++中string的size与length的区别

    在C 的string类中 有两种函数 length和size 他们的作用都是返回字符串的长度 那么 问题来了 他们两者有什么区别 为了钻研 我们要先找到他们两者的源代码 让我们先找到length的源代码 首先 我们随便定义一个字符串 并调用
  • hualinux dj3 2.4:drf普通视图generics及例子

    目录 一 关于通用视图generics 1 1 基于类的视图 1 2 关于通用视图 1 2 1 介绍 1 2 2 属性 1 2 3 方法 1 2 4 Mixins 1 2 5 具体的通用视图 1 2 6 其它 二 drf通用视图generi
  • 内核调试手段

    1 内核调试配置选项 内核拥有多项用于调试的功能 但是这些功能会造成额外的输出并导致性能下降 因此 内核通常都是禁止掉调试功能 内核调试相关的配置项主要集中在内核配置菜单 Kernel hacking 中 在使用下面的调试手段时 先确保内核
  • 如何修改unity项目名称

    在Unity中 修改项目名称需要对一些文件和设置进行修改 以下是修改Unity项目名称的步骤 在Unity编辑器中 选择项目文件夹 Project 面板中的 Assets 然后点击右键 在弹出菜单中选择 Show in Explorer 在
  • 项目管理利器—maven

    一 简介 maven是优秀的项目管理和构建工具 能让我们更为方便的来管理和构建项目 从最基础的环境配置 到maven核心知识点的应用 使用maven来构建和管理Java项目 Maven是基于项目对象模型 POM 可以通过一小段描述信息来管理
  • JavaScript数组中筛选相同的元素组成新数组

    var college type 2 lastName 孙策 type 1 lastName 后裔 type 3 lastName 阿木木 type 3 lastName 亚索 type 1 lastName 剑魔 type 1 lastN
  • 写给我的2015—开启工作新旅程

    前沿 2015年的总结相比2014年来的晚了许多 原因一方面是今年呀的发现CSDN竟然没有了前两年写年终的活动 另一方面嘛还是自己太懒散了 一直恍恍惚惚的没有下手来总结 今天 在这小年夜里 ps 外面下完雪挺冷的 独自一个人坐在办公桌前 静
  • 实心球体内部电势计算公式_均匀带电球体中心点电势怎么求

    展开全部 公式 q 其中 为电势能 q为电荷量 为电势 即 q 均匀带电球内的电场分布和距离球心的距32313133353236313431303231363533e4b893e5b19e31333431363565离r成正比 解析 由于正
  • linux文件权限查看及修改-chmod ------入门的一些常识

    查看linux文件的权限 ls l 文件名称ULUitugULUitug查看linux文件夹的权限 ls ld 文件夹名称 所在目录 ULUitugULUitug修改文件及文件夹权限 ULUitugULUitugsudo chmod 代表类
  • 【软件工程】内聚

    概念 是指一个模块内部个成分之间相互关联程度的度量 也就是说 凝聚是对模块内各处理动作组合强度的一种度量 很显然 一个模块的内聚越大越好 偶然凝聚 一个模块内的各处理元素之间没有任何联系 只是偶然地被凑到一起 这种模块也称为巧合内聚 内聚程
  • MySQL数据库引擎InnoDB和MyISAM的区别?

    数据库引擎InnoDB和MyISAM的区别 1 MyISAM不支持事务 InnoDB支持事务 2 MyISAM支持全文索引 InnoDB在MySQL5 6之前不支持 3 MyISAM不支持外键 InnoDB支持外键 4 MyISAM只支持表
  • STM32之flash的读写

    本文内容 本实验主要介绍Flash地址空间的数据读取 一 创建STM32CUBEMX工程 芯片选择F103C8 配置定时器 打开外部时钟 配置时钟 配置PC13为output对应板子上的LED 设置堆栈大小为4K 导出 二 KEIL下的配置
  • Vue 3 第七章:computed计算属性

    文章目录 1 Vue3中的computed函数 1 1 什么是computed 1 2 如何定义computed 1 3 computed函数的使用场景 1 3 1 过滤和排序 1 3 1 数组计算 2 computed函数的原理 总结 1
  • getset_descriptor

    What is the dict dict attribute of a Python class up vote 43 down vote favorite 23 gt gt gt class A object pass gt gt gt
  • 第六章 Hystrix断路器详解+环境搭建

    目录 一 Hystrix的背景及介绍 1 分布式系统面临的问题 2 解决方案 3 Hystrix介绍 4 Hystrix服务熔断 二 搭建项目基础环境 1 创建 父工程及公共api 见 第三章 2 创建 Eureka 服务 见 第三章 3
  • c语言宏定义唯一匿名变量,C语言宏定义技巧

    写好C语言 漂亮的宏定义很重要 使用宏定义可以防止出错 提高可移植性 可读性 方便性 等等 下面列举一些成熟软件中常用得宏定义 1 防止一个头文件被重复包含 ifndef COMDEF H define COMDEF H 头文件内容 end
  • MySQL/MariaDB 查询某个 / 多个字段重复数据

    创建测试表和数据 创建表 create table if not exists t duplicate name varchar 255 not null age int not null 插入测试数据 insert into t dupl
  • Pat刷题真题乙级(4)

    标题 前言 Pat乙级1013 组个最小数 Pat乙级1014 科学计数法 Pat乙级1017 打印沙漏 Pat乙级1018 人口普查 Pat乙级1019 旧键盘 前言 这个周末花了两天才写了五道题 嘿嘿 康康吧 Pat乙级1013 组个最