PAT乙级初步题解
飞翔的荷兰人灬
阁下何不乘风起,扶摇直上九万里
展开
-
PAT乙级—1050. 螺旋矩阵(25)-native
本题要求将给定的N个正整数按非递增的顺序,填入“螺旋矩阵”。所谓“螺旋矩阵”,是指从左上角第1个格子开始,按顺时针螺旋方向填充。要求矩阵的规模为m行n列,满足条件:m*n等于N;m>=n;且m-n取所有可能值中的最小值。输入格式:输入在第1行中给出一个正整数N,第2行给出N个待填充的正整数。所有数字不超过104,相邻数字以空格分隔。输出格式:输出螺旋矩阵。每行n个数字,共m行。相邻数字以1个空格分隔原创 2016-06-06 22:46:51 · 2299 阅读 · 5 评论 -
PAT乙级—1014. 福尔摩斯的约会 (20)-native
大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”,因为前面两字符串中第1对相同的大写英文字母(大小写有区分)是第4个字母’D’,代表星期四;第2对相同的字符是’E’,那是第5个英文字母,代表一天里的第14个钟头(原创 2016-06-13 13:52:15 · 3306 阅读 · 0 评论 -
PAT乙级—1013. 数素数 (20)-native
令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数。输入格式:输入在一行中给出M和N,其间以空格分隔。输出格式:输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。输入样例: 5 27 输出样例: 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89原创 2016-06-13 13:29:45 · 690 阅读 · 0 评论 -
PAT乙级—1012. 数字分类 (20)-native
给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:A1 = 能被5整除的数字中所有偶数的和; A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4…; A3 = 被5除后余2的数字的个数; A4 = 被5除后余3的数字的平均数,精确到小数点后1位; A5 = 被5除后余4的数字中最大数字。 输入格式:每个输入包含1个测试用例。每个测试用例先给出一个原创 2016-06-13 13:01:49 · 380 阅读 · 0 评论 -
PAT乙级—1011. A+B和C (15)-native
给定区间[-231, 231]内的3个整数A、B和C,请判断A+B是否大于C。输入格式:输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。输出格式:对每组测试用例,在一行中输出“Case #X: true”如果A+B>C,否则输出“Case #X: false”,其中X是测试用例的编号(从1开始)。输入样例: 4 1 2原创 2016-06-13 12:51:33 · 691 阅读 · 0 评论 -
PAT乙级—1010. 一元多项式求导 (25)-native
设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为n*xn-1。)输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。输入样例: 3 4 -5 2 6 1 -2 0 输出样例原创 2016-06-12 17:01:14 · 669 阅读 · 0 评论 -
PAT乙级—1009. 说反话 (20)-native
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。输出格式:每个测试用例的输出占一行,输出倒序后的句子。输入样例: Hello World Here I Come 输出样例:原创 2016-06-12 15:57:27 · 625 阅读 · 1 评论 -
PAT乙级—1008. 数组元素循环右移问题 (20)-native
一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1……AN-1)变换为(AN-M …… AN-1 A0 A1……AN-M-1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每个输入包含一个测试用例,第1行输入N ( 1<=N<=100)、M(M>=0)原创 2016-06-12 15:42:02 · 457 阅读 · 0 评论 -
PAT乙级—1007. 素数对猜想 (20)-native
让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N (< 105),请计算不超过N的满足猜想的素数对的个数。输入格式:每个测试输入包含1个测试用例,给出正整数N。输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。输入样例: 20原创 2016-06-12 15:29:27 · 1551 阅读 · 0 评论 -
PAT乙级—1006. 换个格式输出整数 (15)-native
让我们用字母B来表示“百”、字母S表示“十”,用“12…n”来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数。例如234应该被输出为BBSSS1234,因为它有2个“百”、3个“十”、以及个位的4。输入格式:每个测试输入包含1个测试用例,给出正整数n(<1000)。输出格式:每个测试用例的输出占一行,用规定的格式输出n。输入样例1: 234 输出样例1: BBSSS1234原创 2016-06-12 15:18:32 · 464 阅读 · 0 评论 -
PAT乙级—1004. 成绩排名 (20)-native
读入n名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。输入格式:每个测试输入包含1个测试用例,格式为第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第2个学生的姓名 学号 成绩 … … … 第n+1行:第n个学生的姓名 学号 成绩 其中姓名和学号均为不超过10个字符的字符串,成绩为0到100之间的一个整数,这里保证在一组测试用例中没有两原创 2016-06-12 15:11:39 · 552 阅读 · 0 评论 -
PAT乙级—1003. 我要通过!(20)-native
“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。得到“答案正确”的条件是:字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;如果 aPbTc 是正确的原创 2016-06-12 14:57:50 · 652 阅读 · 0 评论 -
PAT乙级—1002. 写出这个数 (20)-native
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。输入样例: 1234567890987654321123456789 输出样例: yi san wu题目链接:思路:由于n的范围是10的原创 2016-06-12 13:52:27 · 704 阅读 · 0 评论 -
PAT乙级—1001. 害死人不偿命的(3n+1)猜想 (15)-native
卡拉兹(Callatz)猜想:对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进原创 2016-06-12 13:42:25 · 483 阅读 · 1 评论 -
PAT乙级—1055. 集体照 (25)-native
拍集体照时队形很重要,这里对给定的N个人K排的队形设计排队规则如下:每排人数为N/K(向下取整),多出来的人全部站在最后一排; 后排所有人的个子都不比前排任何人矮; 每排中最高者站中间(中间位置为m/2+1,其中m为该排人数,除法向下取整); 每排其他人以中间人为轴,按身高非增序,先右后左交替入队站在中间人的两侧(例如5人身高为190、188、186、175、170,则队形为175、188、1原创 2016-06-05 22:22:16 · 2304 阅读 · 0 评论 -
PAT乙级—1016. 部分A+B (15)-native
正整数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。输出格式:在一行中输出PA + PB的值。输入样例1: 3862767 6原创 2016-06-13 14:12:47 · 949 阅读 · 0 评论 -
PAT乙级—1017. A除以B (20)-native
本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。输入格式:输入在1行中依次给出A和B,中间以1空格分隔。输出格式:在1行中依次输出Q和R,中间以1空格分隔。输入样例: 123456789050987654321 7 输出样例: 17636684150141093474 3//思路:此题在于模拟一个除法竖式的过程原创 2016-06-13 14:49:45 · 496 阅读 · 0 评论 -
1065. 单身狗(25)
这题的关键在于对一群人怎么区分他门的配偶来没来?这其实是一个很现实的例子: 简单的办法就是对于每个现场的人报他们配偶的id,没配偶的不报,记录在一个名单list。 这样下来,现场的没被人报到的就是单身狗。 注意: 一个人被人报到说明他自己和他配偶都在现场,他俩都会在名单上。#include <cstdio>#include <set>#include <iterator>using n原创 2016-12-29 19:11:28 · 3047 阅读 · 0 评论 -
1064. 朋友数(20)
#include <cstdio>int calc(int c){ //分离各个数字并计算出朋友证号 int friendnum = 0; while(c){ friendnum += c % 10; c = c / 10; } return friendnum;}int main(){ int N, c[40] =原创 2016-12-29 19:08:12 · 1564 阅读 · 0 评论 -
1063. 计算谱半径(20)
这题很简单,主要求n对数的根号下平方和的最大值,设立一个max不断更新即可。#include <cstdio>#include <cmath>int main(){ int N, r, v; double s, max = -1500; scanf("%d", &N); for(int i = 0; i < N; i++){ scanf("%d%d原创 2016-12-29 18:58:12 · 812 阅读 · 0 评论 -
1062. 最简分数(20)
这种思路就是比如你要找一个比7/18大的分数,并且规定分母为k,就分子num就应该大于7*k/18比如k=36,就应该是num>(36*7)/18=14,k=12,就是num>(12*7)/18,也就是12*7#include <cstdio>#include <iostream>using namespace std;//递归int gcd(int a, int b){ retur原创 2016-12-28 22:41:31 · 1472 阅读 · 0 评论 -
1061. 判断题(15)
#include <cstdio>int main(){ int N, M, grade[105], student[105], answer[105]; scanf("%d%d", &N, &M); for(int i = 0; i < M; i++) scanf("%d", &grade[i]); for(int i = 0; i < M; i+原创 2016-12-28 17:48:46 · 727 阅读 · 0 评论 -
1060. 爱丁顿数(25)
英国天文学家爱丁顿很喜欢骑车。据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数”E,即满足有E天骑车超过E英里的最大整数E。据说爱丁顿自己的E等于87。现给定某人N天的骑车距离,请你算出对应的爱丁顿数E(<=N)。输入格式:输入第一行给出一个正整数N(<=105),即连续骑车的天数;第二行给出N个非负整数,代表每天的骑车距离。输出格式:在一行中给出N天的爱丁顿数。 输入样例:10 6 7 6原创 2016-10-10 22:30:58 · 1842 阅读 · 1 评论 -
1059. C语言竞赛(20)
C语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛。既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽:冠军将赢得一份“神秘大奖”(比如很巨大的一本学生研究论文集……)。排名为素数的学生将赢得最好的奖品 —— 小黄人玩偶!其他人将得到巧克力。给定比赛的最终排名以及一系列参赛者的ID,你要给出这些参赛者应该获得的奖品。输入格式:输入第一行给出一个正整数N(<=10000),是参赛者人数。随后N行原创 2016-10-10 21:45:09 · 2555 阅读 · 1 评论 -
1058. 选择题(20)
批改多选题是比较麻烦的事情,本题就请你写个程序帮助老师批改多选题,并且指出哪道题错的人最多。输入格式:输入在第一行给出两个正整数N(<=1000)和M(<=100),分别是学生人数和多选题的个数。随后M行,每行顺次给出一道题的满分值(不超过5的正整数)、选项个数(不少于2且不超过5的正整数)、正确选项个数(不超过选项个数的正整数)、所有正确选项。注意每题的选项从小写英文字母a开始顺次排列。各项间以1原创 2016-10-09 16:44:50 · 1369 阅读 · 0 评论 -
PAT乙级——1057. 数零壹(20)-native
思路:首先我们要把如果有英文字母的大写转换成小写来求出字符串的所代表数字,然后用除二取整法记录每一次0的个数和1的个数。#include<cstdio>#include<cstring>#include<cctype>int main(){ char c[1000005]; gets(c); int len=strlen(c); int N=0; for原创 2016-09-15 17:54:06 · 1450 阅读 · 0 评论 -
PAT乙级—1056. 组合数的和(15)
思路:这是很简单的一道题,我们只需要用两个for循环将两个数字组合,由于不存在任何两个相同的数字我们还要求出他们十位和个位对调之后的数字,再加起来就可以了。#include<cstdio>using namespace std;int main(){ int N,n[12]; scanf("%d",&N); for(int i=0;i<N;i++) sca原创 2016-09-15 17:44:27 · 1110 阅读 · 0 评论 -
PAT乙级—1048. 数字加密(20)-native
本题要求实现一种数字加密方法。首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对13取余——这里用J代表10、Q代表11、K代表12;对偶数位,用B的数字减去A的数字,若结果为负数,则再加10。这里令个位为第1位。输入格式:输入在一行中依次给出A和B,均为不超过100位的正整数,其间以空格分隔。输出格式:在一行中输出加密后的结原创 2016-06-13 16:40:35 · 2785 阅读 · 4 评论 -
PAT乙级—1052. 卖个萌 (20)-native
萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见,我们假设一个表情符号是按下列格式输出的:左手[右手] 现给出可选用的符号集合,请你按用户的要求输出表情。输入格式:输入首先在前三行顺序对应给出手、眼、口的可选符号集。每个符号括在一对方括号[]内。题目保证每个集合都至少有一个符号,并不超过10个符号;每个符号包含1到4个非空字符。之后一行给出一个正整数K,为用户请求的个数。随后K原创 2016-05-31 13:59:50 · 2414 阅读 · 0 评论 -
PAT乙级—1019. 数字黑洞 (20)-native
给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。例如,我们从6767开始,将得到7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 = 8352 8532原创 2016-06-13 15:44:00 · 439 阅读 · 0 评论 -
PAT乙级—1018. 锤子剪刀布 (20)-native
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。输入格式:输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方,中间有1个空格。输出格式:输出原创 2016-06-13 15:25:17 · 1001 阅读 · 0 评论 -
PAT乙级—1034. 有理数四则运算(20)-native
本题要求编写程序,计算2个有理数的和、差、积、商。输入格式:输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为0。输出格式:分别在4行中按照“有理数1 运算符 有理数2 = 结果”的格式顺序输出2个有理数的和、差、积、商。注意输出的每个有理数必须是该有理数的最简形式“k a/b”,其中k是整数部分,a/b是最原创 2016-06-10 22:21:37 · 689 阅读 · 0 评论 -
PAT乙级—1025. 反转链表 (25)-native
给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转。例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4;如果K为4,则输出应该为4→3→2→1→5→6,即最后不到K个元素不反转。输入格式:每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址、结点总个数正整数N(<= 105)、以及正整数K(<=N),即要求反转的子链结点的个数。结点的地址是5位非原创 2016-06-10 22:18:17 · 4185 阅读 · 0 评论 -
PAT乙级—1054. 求平均值 (20)-native
本题的基本要求非常简单:给定N个实数,计算它们的平均值。但复杂的是有些输入数据可能是非法的。一个“合法”的输入是[-1000,1000]区间内的实数,并且最多精确到小数点后2位。当你计算平均值的时候,不能把那些非法的数据算在内。输入格式:输入第一行给出正整数N(<=100)。随后一行给出N个正整数,数字间以一个空格分隔。输出格式:对每个非法输入,在一行中输出“ERROR: X is not a le原创 2016-06-04 21:19:16 · 3572 阅读 · 0 评论 -
PAT乙级—1029. 旧键盘(20)-native
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。输入格式:输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字母A-Z(包括大、小写)、数字0-9、以及下划线“_”(代表空格)组成。题目保证2个字符串均非空。输出格式:按照发现顺序,在一行中输出坏掉的键。其中英文字母原创 2016-05-17 14:14:31 · 1684 阅读 · 0 评论 -
PAT乙级—1022. D进制的A+B (20)-native
输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数。输入格式:输入在一行中依次给出3个整数A、B和D。输出格式:输出A+B的D进制数。输入样例:123 456 8输出样例:1103思路:用A与B的和不断除以D以及对D取余,将余数保存在一个数组,然后逆向输出该数组,直到最后A与B的和为0。#include<iostream>using namespac原创 2016-05-05 22:20:10 · 1154 阅读 · 0 评论 -
PAT乙级—1021. 个位数统计 (15)-native
给定一个k位整数N = dk-1*10k-1 + … + d1*101 + d0 (0<=di<=9, i=0,…,k-1, dk-1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定N = 100311,则有2个0,3个1,和1个3。输入格式:每个输入包含1个测试用例,即一个不超过1000位的正整数N。输出格式:对N中每一种不同的个位数字,以D:M的格式在一行中输出该位数字D及其在N中原创 2016-05-04 22:32:40 · 1060 阅读 · 0 评论 -
PAT乙级—1049. 数列的片段和(20)-native
给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段。例如,给定数列{0.1, 0.2, 0.3, 0.4},我们有(0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (0.3) (0.3, 0.4) (0.4) 这10个片段。给定正整数数列,求出全部片段包含的所有的数原创 2016-05-27 22:22:36 · 2776 阅读 · 1 评论 -
PAT乙级—1020. 月饼 (25)-native
月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有3种月饼,其库存量分别为18、15、10万吨,总售价分别为75、72、45亿元。如果市场的最大需求量只有20万吨,那么我们最大收益策略应该是卖出全部15万吨第2种月饼、以及原创 2016-05-03 17:23:38 · 3563 阅读 · 0 评论 -
PAT乙级—1027. 打印沙漏(20)-native
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印***** *** * ********所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。输入格式:输入在一行给出1个正整数N原创 2016-05-13 20:21:11 · 1324 阅读 · 0 评论