PAT刷题(乙级)
中文题,题目挺简单的,主要就考简单模拟、字符串处理、散列Hash、排序、二分、链表。
穿过漫长林径
这个作者很懒,什么都没留下…
展开
-
1048. 数字加密(20) [字符串处理]
1048. 数字加密(20) [字符串处理]本题要求实现⼀种数字加密⽅法。⾸先固定⼀个加密⽤正整数A,对任⼀正整数B,将其每1位数字与A的对应位置上的数字进⾏以下运算:对奇数位,对应位的数字相加后对13取余——这⾥⽤J代表10、Q代表11、K代表12;对偶数位,⽤B的数字减去A的数字,若结果为负数,则再加10。这⾥令个位为第1位。输⼊格式:输⼊在⼀⾏中依次给出A和B,均为不超过100位的正整数,其间以空格分隔。输出格式:在⼀⾏中输出加密后的结果。输⼊样例:1234567 3原创 2021-05-08 20:56:16 · 178 阅读 · 0 评论 -
1047. 编程团体赛(20) [Hash散列]
1047. 编程团体赛(20) [Hash散列]编程团体赛的规则为:每个参赛队由若⼲队员组成;所有队员独⽴⽐赛;参赛队的成绩为所有队员的成绩和;成绩最⾼的队获胜。现给定所有队员的⽐赛成绩,请你编写程序找出冠军队。输⼊格式:输⼊第⼀⾏给出⼀个正整数N(<=10000),即所有参赛队员总数。随后N⾏,每⾏给出⼀位队员的成绩,格式为:“队伍编号-队员编号 成绩”,其中“队伍编号”为1到1000的正整数,“队员编号”为1到10的正整数,“成绩”为0到100的整数。输出格式:在⼀⾏中输出冠军原创 2021-05-08 18:59:44 · 171 阅读 · 0 评论 -
1046. 划拳(15) [模拟]
1046. 划拳(15) [模拟]划拳是古⽼中国酒⽂化的⼀个有趣的组成部分。酒桌上两⼈划拳的⽅法为:每⼈⼝中喊出⼀个数字,同时⽤⼿⽐划出⼀个数字。如果谁⽐划出的数字正好等于两⼈喊出的数字之和,谁就赢了,输家罚⼀杯酒。两⼈同赢或两⼈同输则继续下⼀轮,直到唯⼀的赢家出现。下⾯给出甲、⼄两⼈的划拳记录,请你统计他们最后分别喝了多少杯酒。输⼊格式:输⼊第⼀⾏先给出⼀个正整数N(<=100),随后N⾏,每⾏给出⼀轮划拳的记录,格式为:甲喊 甲划 ⼄喊 ⼄划其中“喊”是喊出的数字,“划”是划出的数原创 2021-05-02 23:00:01 · 96 阅读 · 0 评论 -
☆1045 快速排序 (25 分)
1045 快速排序 (25 分)著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。 给定划分后的N个互不相同的正整数的排列,请问有多少个元素可能是划分前选取的主元?例如给定N=5, 排列是1、3、2、4、5。则:1 的左边没有元素,右边的元素都比它大,所以它可能是主元; 尽管 3 的左边元素都比它小,但其右边的 2 比它小,所以它不能是主元; 尽管 2 的右边元素都比它大,但其左边的 3...原创 2021-05-01 21:32:19 · 86 阅读 · 0 评论 -
1010 一元多项式求导 (25 分)
1010 一元多项式求导 (25 分)解:这题首先判断是零多项式的情况,直接输出0 0,否则输出 a*b,b-1,其中a是系数,b是指数;然后在while循环输出后面系数 指数就可以了。code1:c版#include <iostream>#include <cstdio>using namespace std;int main(){ int a,b; scanf("%d%d",&a,&b); if(b==0){ .原创 2021-05-01 18:39:11 · 136 阅读 · 0 评论 -
☆1044. ⽕星数字(20) [map映射,STL的使⽤]
1044. ⽕星数字(20) [map映射,STL的使⽤]⽕星⼈是以13进制计数的:地球⼈的0被⽕星⼈称为tret。地球⼈数字1到12的⽕星⽂分别为:jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov, dec。⽕星⼈将进 位以后的12个⾼位数字分别称为:tam, hel, maa, huh, tou, kes, hei, elo, syy, lok, mer, jou。例如地球⼈ 的数字“29”翻译成⽕星⽂就是“hel mar”;原创 2021-04-28 21:44:21 · 87 阅读 · 0 评论 -
1043 输出PATest (20 分)【哈希散列】
1043 输出PATest (20 分)分析:将字符串的每⼀个字符出现的个数保存在int map[128]中,然后依次输出PATest,每次输出⼀次 字符就将map对应的字符个数减1。 为什么是128的数组呢?用字符的ASCII作下标。#include <iostream>using namespace std;int main(){ int map[128]={0},c; while( (c=cin.get()) != EOF) map[c]++...原创 2021-04-27 21:07:49 · 239 阅读 · 0 评论 -
1042 字符统计 (20 分)
1042 字符统计 (20 分)请编写程序,找出一段给定文字中出现最频繁的那个英文字母。输入格式:输入在一行中给出一个长度不超过 1000 的字符串。字符串由 ASCII 码表中任意可见字符及空格组成,至少包含 1 个英文字母,以回车结束(回车不算在内)。输出格式:在一行中输出出现频率最高的那个英文字母及其出现次数,其间以空格分隔。如果有并列,则输出按字母序最小的那个字母。统计时不区分大小写,输出小写字母。输入样例:This is a simple TEST. There A原创 2021-04-27 19:58:28 · 215 阅读 · 0 评论 -
1041 考试座位号 (15 分)
1041 考试座位号 (15 分)每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。输入格式:输入第一行给出一个正整数N(≤1000),随后N行,每行给出一个考生的信息:准考证号 试机座位号 考试座位号。其中准考证号由 16 位数...原创 2021-04-26 21:26:55 · 68 阅读 · 0 评论 -
1040 有几个PAT (25 分)
1040 有几个PAT (25 分)输入样例:APPAPT输出样例:2解:这题数学规律找到了,就好做: 每个A的左边的 P数量 * A的右边T数量 就等于PAT的数量,累加起来,就得到结果了分析:要想知道构成多少个PAT,那么遍历字符串后对于每⼀A,它前⾯的P的个数和它后⾯的T的个数的乘积就是能构成的PAT的个数。然后把对于每⼀个A的结果相加即可~~辣么就简单啦,只需要先遍历字符串数⼀数有多少个T~~然后每遇到⼀个T呢~~countt–;每遇到⼀个P呢,countp+..原创 2021-04-26 20:46:58 · 155 阅读 · 0 评论 -
1039 到底买不买 (20 分)
1039 到底买不买 (20 分)输入格式:每个输入包含 1 个测试用例。每个测试用例分别在 2 行中先后给出摊主的珠串和小红想做的珠串,两串都不超过 1000 个珠子。输出格式:如果可以买,则在一行中输出Yes以及有多少多余的珠子;如果不可以买,则在一行中输出No以及缺了多少珠子。其间以 1 个空格分隔。输入样例 1:ppRYYGrrYBR2258YrR8RrY输出样例 1:Yes 8输入样例 2:ppRYYGrrYB225YrR8RrY...原创 2021-04-25 19:49:50 · 111 阅读 · 0 评论 -
1038 统计同成绩学生 (20 分)
1038 统计同成绩学生 (20 分)本题要求读入N名学生的成绩,将获得某一给定分数的学生人数输出。输入格式:输入在第 1 行给出不超过105的正整数N,即学生总人数。随后一行给出N名学生的百分制整数成绩,中间以空格分隔。最后一行给出要查询的分数个数K(不超过N的正整数),随后是K个分数,中间以空格分隔。输出格式:在一行中按查询顺序给出得分等于指定分数的学生人数,中间以空格分隔,但行末不得有多余空格。输入样例:1060 75 90 55 75 9...原创 2021-04-25 17:58:03 · 116 阅读 · 0 评论 -
1037 在霍格沃茨找零钱 (20 分)
1037 在霍格沃茨找零钱 (20 分)输出格式:在一行中用与输入同样的格式输出哈利应该被找的零钱。如果他没带够钱,那么输出的应该是负数。输入样例 1:10.16.27 14.1.28输出样例 1:3.2.1输入样例 2:14.1.28 10.16.27输出样例 2:-3.2.1分析:abc代表应付的钱,mnt代表实付的钱,⾸先判断应付的钱是否⼤于实付的钱,如果⼤于,说明钱不够,为了简化计算,将a和m、b和n、c和t调换,使得计算(mnt-...原创 2021-04-24 21:31:29 · 79 阅读 · 0 评论 -
1036 跟奥巴马一起编程 (15 分)
1036 跟奥巴马一起编程 (15 分)解:35好难,这题应该是来安慰安慰你的,冲冲冲!!!#include <cstdio>#include <cstring>#include <iostream>#include <sstream>#include <cmath>#include <algorithm>#include <string>#include <stack>#incl.原创 2021-04-24 20:33:53 · 59 阅读 · 0 评论 -
1034 有理数四则运算 (20 分)
1034 有理数四则运算 (20 分)输入样例 1:2/3 -4/2输出样例 1:2/3 + (-2) = (-1 1/3)2/3 - (-2) = 2 2/32/3 * (-2) = (-1 1/3)2/3 / (-2) = (-1/3)输入样例 2:5/3 0/6输出样例 2:1 2/3 + 0 = 1 2/31 2/3 - 0 = 1 2/31 2/3 * 0 = 01 2/3 / 0 = Inf????,看柳神#includ...原创 2021-04-23 20:48:30 · 127 阅读 · 0 评论 -
1033 旧键盘打字 (20 分)
1033 旧键盘打字 (20 分)输入样例:7+IE.7_This_is_a_test.输出样例:_hs_s_a_tst#include <cstdio>#include <cstring>#include <iostream>#include <sstream>#include <cmath>#include <algorithm>#include <string>#incl.原创 2021-04-22 21:43:24 · 80 阅读 · 0 评论 -
1032 挖掘机技术哪家强 (20 分)
1032 挖掘机技术哪家强 (20 分)为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。输入格式:输入在第 1 行给出不超过105的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从 1 开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。输出格式:在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。输入样例:6...原创 2021-04-22 20:47:35 · 61 阅读 · 0 评论 -
1031 查验身份证 (15 分)
1031 查验身份证 (15 分)输入样例1:432012419880824005612010X19890101123411010819671130186637070419881216001X输出样例1:12010X19890101123411010819671130186637070419881216001X输入样例2:2320124198808240056110108196711301862输出样例2:All passed#includ.原创 2021-04-21 21:44:21 · 117 阅读 · 0 评论 -
☆1030 完美数列 (25 分)
1030 完美数列 (25 分)#include <cstdio>#include <cstring>#include <iostream>#include <sstream>#include <cmath>#include <algorithm>#include <string>#include <stack>#include <queue>#include <v.原创 2021-04-20 20:48:31 · 68 阅读 · 0 评论 -
1029 旧键盘 (20 分)
1029 旧键盘 (20 分)#include <cstdio>#include <cstring>#include <iostream>#include <sstream>#include <cmath>#include <algorithm>#include <string>#include <stack>#include <queue>#include &l..原创 2021-04-20 19:36:37 · 57 阅读 · 0 评论 -
1028 人口普查 (20 分)
1028 人口普查 (20 分)解1:#include <iostream>#include <stdio.h>#include <cstring>using namespace std;const char maxInBirth[11] = "2014/09/06";const char minInBirth[11] = "1814/09/06";int main(){ int n,cnt=0; char name...原创 2021-04-19 21:02:27 · 96 阅读 · 0 评论 -
1027 打印沙漏 (20 分)
1027 打印沙漏 (20 分)输入格式:输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。输出格式:首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。输入样例:19 *输出样例:***** *** * ********2#include <iostream>#include <cstdio>#include <algorithm>#include <..原创 2021-04-18 22:21:38 · 60 阅读 · 0 评论 -
1026 程序运行时间 (15 分)
1026 程序运行时间 (15 分)输入格式:输入在一行中顺序给出 2 个整数 C1 和 C2。注意两次获得的时钟打点数肯定不相同,即 C1<C2,并且取值在[0,107]。输出格式:在一行中输出被测函数运行的时间。运行时间必须按照hh:mm:ss(即2位的时:分:秒)格式输出;不足 1 秒的时间四舍五入到秒。输入样例:123 4577973输出样例:12:42:59解析:这题主要是小数点后面四舍五入 ,直接+0.5就可以了,因为in...原创 2021-04-18 21:05:57 · 156 阅读 · 0 评论 -
1025 反转链表 (25 分)
1025 反转链表 (25 分)输入样例:00100 6 400000 4 9999900100 1 1230968237 6 -133218 3 0000099999 5 6823712309 2 33218输出样例:00000 4 3321833218 3 1230912309 2 0010000100 1 9999999999 5 6823768237 6 -1分析:输入样例正确连接顺序应该是:/*00100 1 1230912309 2...原创 2021-04-17 21:22:23 · 118 阅读 · 0 评论 -
1024 科学计数法 (20 分)
1024 科学计数法 (20 分)大体思路:如果指数为负数, 则先添加0, 同时在第一个0后面添加小数点。如果指数为正数,则判断指数是否小于系数长度。如果小于,则在对应位置添加小数点。如果大于,则添加指数-系数长度个0。#include<stdio.h> #include<string.h>int main(){ char s[10000]; scanf("%s",s); int len = strlen(s); if(s.原创 2021-04-16 21:39:13 · 111 阅读 · 0 评论 -
1023 组个最小数 (20 分)
1023 组个最小数 (20 分)解析:这道题理清楚 a[i]是个数,下标i是对应数字,下标1对应数字就是1。#include <iostream>using namespace std;int main(){ int a[10]={0}; for(int i=0;i<10;i++){ cin>>a[i]; } //先找第一位数字,第一位不能是0,所以直接从i=1开始 for(int i=1;i&l..原创 2021-04-16 17:39:57 · 74 阅读 · 0 评论 -
1022 D进制的A+B (20 分)
1022 D进制的A+B (20 分)1022 D进制的A+B (20 分)#include <iostream>using namespace std;int main(){ int a,b,d; scanf("%d%d%d",&a,&b,&d); int sum=0; sum=a+b; int n[100001],i=0; if(sum==0) { cout<<0; return .原创 2021-04-15 21:52:51 · 73 阅读 · 0 评论 -
1021 个位数统计 (15 分)
1021 个位数统计 (15 分)#include <iostream>using namespace std;int main(){ string s; int a[10]={0}; cin>>s; for(int i=0;i<s.length();i++){ a[s[i]-'0']++; } for(int i=0;i<10;i++){ if(a[i]!=0) .原创 2021-04-15 21:25:12 · 68 阅读 · 0 评论 -
1020 月饼 (25 分)
1020 月饼 (25 分)#include <iostream>#include <algorithm>#include <vector>using namespace std;struct mooncake{ float mount,price,unit;};int cmp(mooncake a,mooncake b){ return a.unit>b.unit;}int main(){ int n,nee.原创 2021-04-15 21:00:32 · 67 阅读 · 0 评论 -
1019 数字黑洞 (20 分)
1019 数字黑洞 (20 分)输入样例 2:2222输出样例 2:2222 - 2222 = 0000解1#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int cmax(int a){ int b[4]={0}; int t=1000,sum=0,i=0; while(a){ ...原创 2021-04-15 20:23:04 · 63 阅读 · 0 评论 -
1018 锤子剪刀布 (20 分)
1018 锤子剪刀布 (20 分)现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。输入格式:输入第 1 行给出正整数N(≤105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第 1 个字母代表甲方,第 2 个代表乙方,中间有 1 个空格。输出格式:输出第 1、2 行分别给出甲、乙的胜、平、负次数,数字间以 1 个空格分隔。第 3 行给出两个字母...原创 2021-04-13 20:31:41 · 73 阅读 · 0 评论 -
1016 部分A+B (15 分)
1016 部分A+B (15 分)正整数A的“DA(为 1 位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A=3862767,DA=6,则A的“6 部分”PA是 66,因为A中有 2 个 6。现给定A、DA、B、DB,请编写程序计算PA+PB。输入格式:输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0<A,B<1010。输出格式:在一行中...原创 2021-04-11 21:16:17 · 62 阅读 · 0 评论 -
1017 A除以B (20 分)
1017 A除以B (20 分)本题要求计算A/B,其中A是不超过 1000 位的正整数,B是 1 位正整数。你需要输出商数Q和余数R,使得A=B×Q+R成立。输入格式:输入在一行中依次给出A和B,中间以 1 空格分隔。输出格式:在一行中依次输出Q和R,中间以 1 空格分隔。输入样例:123456789050987654321 7输出样例:17636684150141093474 3#include <iostream>...原创 2021-04-11 21:13:16 · 124 阅读 · 0 评论 -
1015 德才论 (25 分)
1015 德才论 (25 分)输入格式:输入第一行给出 3 个正整数,分别为:N(≤105),即考生总数;L(≥60),为录取最低分数线,即德分和才分均不低于L的考生才有资格被考虑录取;H(<100),为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”,此类考生按德才总分从高到低排序;才分不到但德分到线的一类考生属于“德胜才”,也按总分排序,但排在第一类考生之后;德才分均低于H,但是德分不低于才分的考生属于“才德兼亡”但尚有“德胜才”者,按总分排序,但排在第二类考生之后;...原创 2021-04-10 22:52:19 · 96 阅读 · 0 评论 -
1014 福尔摩斯的约会 (20 分)
1014 福尔摩斯的约会 (20 分)大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间星期四 14:04,因为前面两字符串中第 1 对相同的大写英文字母(大小写有区分)是第 4 个字母D,代表星期四;第 2 对相同的字符是E,那是第 5 个英文字母,代表一天里的第 14 个钟头(于是一天的 0 点到 23 点由数字 0 ...原创 2021-04-10 16:48:09 · 98 阅读 · 0 评论 -
1013 数素数 (20 分)
1013 数素数 (20 分)令Pi表示第i个素数。现任给两个正整数M≤N≤104,请输出PM到PN的所有素数。输入格式:输入在一行中给出M和N,其间以空格分隔。输出格式:输出从PM到PN的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。输入样例:5 27输出样例:11 13 17 19 23 29 31 37 41 4347 53 59 61 67 71 73 79 8...原创 2021-04-09 21:26:09 · 70 阅读 · 0 评论 -
1004 成绩排名 (20 分)
1004 成绩排名 (20 分)读入n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。输入格式:每个测试输入包含 1 个测试用例,格式为第 1 行:正整数 n第 2 行:第 1 个学生的姓名 学号 成绩第 3 行:第 2 个学生的姓名 学号 成绩 ... ... ...第 n+1 行:第 n 个学生的姓名 学号 成绩其中姓名和学号均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生.原创 2021-04-09 19:13:01 · 88 阅读 · 0 评论 -
1012 数字分类 (20 分)
1012 数字分类 (20 分)给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:A1= 能被 5 整除的数字中所有偶数的和; A2= 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算n1−n2+n3−n4⋯; A3= 被 5 除后余 2 的数字的个数; A4= 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位; A5= 被 5 除后余 4 的数字中最大数字。输入格式:每个输入包含 1...原创 2021-04-08 20:20:23 · 68 阅读 · 0 评论 -
1009 说反话 (20 分)
1009 说反话 (20 分)给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。输出格式:每个测试用例的输出占一行,输出倒序后的句子。输入样例:Hello World Here I Come输出样例:Come I Here World Hel原创 2021-04-08 13:34:17 · 55 阅读 · 0 评论 -
1008 数组元素循环右移问题 (20 分)
1008 数组元素循环右移问题 (20 分)一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(AN−M⋯AN−1A0A1⋯AN−M−1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分原创 2021-04-08 12:53:52 · 78 阅读 · 0 评论