标题

  • 前言
  • 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)相关推荐

  1. Python计算机二级编程题真题及考点总结(上篇)

    文章目录 一.前言 二.考纲/考试方式 三.编程题详解 3.1 基本操作题-真题 3.2 基本操作题-考点总结 3.2.1 考点一:基本输入输出函数 3.2.2 考点二.三:程序的控制结构和数据类型 ...

  2. Python计算机二级编程题真题及考点总结【纯干货】(下篇)

    文章目录 一.前言 二.编程题详解 2.1 简单应用题 2.1.1 简单应用题-真题 2.1.2 简单应用题-考点总结 考点一:turtle库绘图 考点二:数据类型处理相关 2.2 综合应用题 考点三 ...

  3. 【计算思维题】少儿编程 蓝桥杯青少组计算思维题真题及解析第2套

    少儿编程 蓝桥杯青少组计算思维题真题及解析第2套 1.天平的左右两端分别放有一些砝码,如下图所示,右边的砝码不变,从左边最多拿走几个砝码,可以使天平左右两边平衡 A.1 B.2 C.3 D.4 答案: ...

  4. 【科技素养题】少儿编程 蓝桥杯青少组科技素养题真题及解析第17套

    [科技素养题]少儿编程 蓝桥杯青少组科技素养题真题及解析第17套 1.在阅读文章和接受信息时注意区分事实和观点十分重要.事实(或称为命题)不同于观点的一个主要特征是 A.可以被证实或证伪 B.是准确无 ...

  5. 【计算思维题】少儿编程 蓝桥杯青少组计算思维题真题及解析第1套

    少儿编程 蓝桥杯青少组计算思维题真题及解析第1套 1.多多观察一个立体图形,从不同的角度看到的形状如下图所示: 这个立体图形可能是  答案:D 考点分析:考查小朋友们的观察能力和推理能力,从前面视角看 ...

  6. 山西专升本C语言编程题真题

    山西专升本C语言编程题真题 2010年 2011年 2012年 2013年 2014年 2015年 2016年 2017年 2018年 2019年 2020年 所有代码为博主本人思路,并非标准答案,仅 ...

  7. 【科技素养题】少儿编程 蓝桥杯青少组科技素养题真题及解析第19套

    少儿编程 蓝桥杯青少组科技素养题真题及解析第19套 1.下列现象中有化学变化发生的是  A.蜡烛融化 B.冰块融化 C.电磁炉烧开水 D.铁生锈 答案:D 考点分析:主要考查小朋友们的物理和化学知识, ...

  8. 计算机科学与技术专业考博课程,北京大学考博计算机科学与技术专业介绍,考博真题,真题解析.pdf...

    北京大学考博计算机科学与技术专业介绍,考博真题,真题解析.pdf [全国百所名校定向保录] [才思教育由命题组领专业化辅导] 考博详解与指导 系所名称 信息科学技术学院 招生总数 118 其中推荐直博 ...

  9. SAT OG阅读填空题真题词汇

    下面为大家推荐的是关于SAT阅读填空题真题词汇的一个汇总,包括了SAT OG上面P390-P393的全部填空题词汇.SAT阅读填空题是考察考生词汇掌握的最主要也是最直接的题型,所以大家想要答好这个题目 ...

  10. 网易 2019 秋季校园招聘编程题真题集合

    网易 2019 秋季校园招聘编程题真题集合 第一题 俄罗斯方块 问题描述 小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块.因为它比较古老,所以规则和一般的俄罗斯方块不同. 荧幕上一共有 n 列, ...

最新文章

  1. 【Java】Cloneable 接口讲解 (包含浅拷贝与深拷贝不一样的实现讲解)
  2. html中运行php脚本,php脚本在html文件中
  3. 在Windows 7下安装Oracle 11g的解决方法
  4. 互联网协议 — OAuth2 第三方授权协议
  5. 2020年PHP中级面试知识点及答案
  6. Sql Server实用操作-存储过程精解
  7. 网工路由基础(6)BGP协议
  8. nodejs redis 发布订阅_太赞了:Spring boot+redis实现消息发布与订阅
  9. Spring中使用XML方式导入Spring配置文件,Boot中使用全注解导入Spring配置
  10. pytorch教程之nn.Sequential类详解——使用Sequential类来自定义顺序连接模型
  11. Redis 单机使用以及部署
  12. 使用burp suite验证是否存在csrf漏洞
  13. squid代理服务器的应用
  14. Java Lombok详解
  15. 30岁的女程序员该何去何从
  16. Unity3D动作类游戏中两种相机抖动
  17. 命好啊,只能说您遇到仁义的领导了
  18. MFC限制鼠标区域、画橡皮条线、任务栏显示图标、核对标记、文档背景色(二)
  19. word转FreeMarker的ftl文件编辑导出编辑后的word
  20. 《The Tao Of Programming》——编程之道

热门文章

  1. SAE J3040-2022 (E-Vehicle) Crash Test Lab Safety Guidelines 电动汽车碰撞试验实验室安全指南 已经发布
  2. linux驱动程序开发指南-字符驱动介绍
  3. ecshop模板教程-模板构造
  4. Z-library 官方正式回归!
  5. 进程间通讯回调客户端
  6. Android自定义View之圆弧形进度条,支持背景图片设置
  7. javascript核心(二)
  8. 论文阅读:Adding Attentiveness to the Neurons in Recurrent Neural Networks
  9. 从计算上云到边缘计算,走向数字未来
  10. win10 C盘扩容(系统自带磁盘管理功能受限时,请尝试此方法,亲测有效)