Pat刷题真题乙级(4)
标题
- 前言
- Pat乙级1013(组个最小数)
- Pat乙级1014(科学计数法)
- Pat乙级1017(打印沙漏)
- Pat乙级1018(人口普查)
- Pat乙级1019(旧键盘)
前言
这个周末花了两天才写了五道题,嘿嘿!康康吧!
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 0b++; //统计有多少位数 00115558}}}//00225558 20025558for(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.400for (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.00123400int f = Integer.parseInt(str4);//E后面的数值char ch3 = str.charAt(0);//获取正负号boolean jud = true;if(ch3=='-')jud=false;//int a=0if (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);}}
}
Pat刷题真题乙级(4)相关推荐
- Python计算机二级编程题真题及考点总结(上篇)
文章目录 一.前言 二.考纲/考试方式 三.编程题详解 3.1 基本操作题-真题 3.2 基本操作题-考点总结 3.2.1 考点一:基本输入输出函数 3.2.2 考点二.三:程序的控制结构和数据类型 ...
- Python计算机二级编程题真题及考点总结【纯干货】(下篇)
文章目录 一.前言 二.编程题详解 2.1 简单应用题 2.1.1 简单应用题-真题 2.1.2 简单应用题-考点总结 考点一:turtle库绘图 考点二:数据类型处理相关 2.2 综合应用题 考点三 ...
- 【计算思维题】少儿编程 蓝桥杯青少组计算思维题真题及解析第2套
少儿编程 蓝桥杯青少组计算思维题真题及解析第2套 1.天平的左右两端分别放有一些砝码,如下图所示,右边的砝码不变,从左边最多拿走几个砝码,可以使天平左右两边平衡 A.1 B.2 C.3 D.4 答案: ...
- 【科技素养题】少儿编程 蓝桥杯青少组科技素养题真题及解析第17套
[科技素养题]少儿编程 蓝桥杯青少组科技素养题真题及解析第17套 1.在阅读文章和接受信息时注意区分事实和观点十分重要.事实(或称为命题)不同于观点的一个主要特征是 A.可以被证实或证伪 B.是准确无 ...
- 【计算思维题】少儿编程 蓝桥杯青少组计算思维题真题及解析第1套
少儿编程 蓝桥杯青少组计算思维题真题及解析第1套 1.多多观察一个立体图形,从不同的角度看到的形状如下图所示: 这个立体图形可能是 答案:D 考点分析:考查小朋友们的观察能力和推理能力,从前面视角看 ...
- 山西专升本C语言编程题真题
山西专升本C语言编程题真题 2010年 2011年 2012年 2013年 2014年 2015年 2016年 2017年 2018年 2019年 2020年 所有代码为博主本人思路,并非标准答案,仅 ...
- 【科技素养题】少儿编程 蓝桥杯青少组科技素养题真题及解析第19套
少儿编程 蓝桥杯青少组科技素养题真题及解析第19套 1.下列现象中有化学变化发生的是 A.蜡烛融化 B.冰块融化 C.电磁炉烧开水 D.铁生锈 答案:D 考点分析:主要考查小朋友们的物理和化学知识, ...
- 计算机科学与技术专业考博课程,北京大学考博计算机科学与技术专业介绍,考博真题,真题解析.pdf...
北京大学考博计算机科学与技术专业介绍,考博真题,真题解析.pdf [全国百所名校定向保录] [才思教育由命题组领专业化辅导] 考博详解与指导 系所名称 信息科学技术学院 招生总数 118 其中推荐直博 ...
- SAT OG阅读填空题真题词汇
下面为大家推荐的是关于SAT阅读填空题真题词汇的一个汇总,包括了SAT OG上面P390-P393的全部填空题词汇.SAT阅读填空题是考察考生词汇掌握的最主要也是最直接的题型,所以大家想要答好这个题目 ...
- 网易 2019 秋季校园招聘编程题真题集合
网易 2019 秋季校园招聘编程题真题集合 第一题 俄罗斯方块 问题描述 小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块.因为它比较古老,所以规则和一般的俄罗斯方块不同. 荧幕上一共有 n 列, ...
最新文章
- 【Java】Cloneable 接口讲解 (包含浅拷贝与深拷贝不一样的实现讲解)
- html中运行php脚本,php脚本在html文件中
- 在Windows 7下安装Oracle 11g的解决方法
- 互联网协议 — OAuth2 第三方授权协议
- 2020年PHP中级面试知识点及答案
- Sql Server实用操作-存储过程精解
- 网工路由基础(6)BGP协议
- nodejs redis 发布订阅_太赞了:Spring boot+redis实现消息发布与订阅
- Spring中使用XML方式导入Spring配置文件,Boot中使用全注解导入Spring配置
- pytorch教程之nn.Sequential类详解——使用Sequential类来自定义顺序连接模型
- Redis 单机使用以及部署
- 使用burp suite验证是否存在csrf漏洞
- squid代理服务器的应用
- Java Lombok详解
- 30岁的女程序员该何去何从
- Unity3D动作类游戏中两种相机抖动
- 命好啊,只能说您遇到仁义的领导了
- MFC限制鼠标区域、画橡皮条线、任务栏显示图标、核对标记、文档背景色(二)
- word转FreeMarker的ftl文件编辑导出编辑后的word
- 《The Tao Of Programming》——编程之道
热门文章
- SAE J3040-2022 (E-Vehicle) Crash Test Lab Safety Guidelines 电动汽车碰撞试验实验室安全指南 已经发布
- linux驱动程序开发指南-字符驱动介绍
- ecshop模板教程-模板构造
- Z-library 官方正式回归!
- 进程间通讯回调客户端
- Android自定义View之圆弧形进度条,支持背景图片设置
- javascript核心(二)
- 论文阅读:Adding Attentiveness to the Neurons in Recurrent Neural Networks
- 从计算上云到边缘计算,走向数字未来
- win10 C盘扩容(系统自带磁盘管理功能受限时,请尝试此方法,亲测有效)