
PAT-乙
llsong98
你必须要么就非常非常努力,要么就非常非常聪明,你才能勉强过上一种平庸的生活。
展开
-
B1057 数零壹
给定一串长度不超过 10^5的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一下 N 的二进制表示中有多少 0、多少 1。例如给定字符串 PAT (Basic),其字母序号之和为:16+1+20+2+1+19+9+3=71,而 71 的二进制是 1000111,即有 3 个 0、4 个 1。输入格式:输入在一行中给出长...原创 2020-03-20 23:02:14 · 163 阅读 · 0 评论 -
B1056 组合数的和
给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字。要求所有可能组合出来的 2 位数字的和。例如给定 2、5、8,则可以组合出:25、28、52、58、82、85,它们的和为330。输入格式:输入在一行中先给出 N(1 < N < 10),随后给出 N 个不同的非 0 个位数字。数字间以空格分隔。输出格式:输出所有可能组合出来的2位数字的和...原创 2020-03-20 22:28:14 · 124 阅读 · 0 评论 -
B1054 求平均值
本题的基本要求非常简单:给定 N 个实数,计算它们的平均值。但复杂的是有些输入数据可能是非法的。一个“合法”的输入是 [−1000,1000] 区间内的实数,并且最多精确到小数点后 2 位。当你计算平均值的时候,不能把那些非法的数据算在内。输入格式:输入第一行给出正整数 N(≤100)。随后一行给出 N 个实数,数字间以一个空格分隔。输出格式:对每个非法输入,在一行中输出 ERROR: X...原创 2020-03-19 16:47:39 · 160 阅读 · 0 评论 -
B1053 住房空置率
在不打扰居民的前提下,统计住房空置率的一种方法是根据每户用电量的连续变化规律进行判断。判断方法如下:在观察期内,若存在超过一半的日子用电量低于某给定的阈值 e,则该住房为“可能空置”;若观察期超过某给定阈值 D 天,且满足上一个条件,则该住房为“空置”。现给定某居民区的住户用电量数据,请你统计“可能空置”的比率和“空置”比率,即以上两种状态的住房占居民区住房总套数的百分比。输入格式:输入...原创 2020-03-19 15:51:50 · 85 阅读 · 0 评论 -
B1052 卖个萌
萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见,我们假设一个表情符号是按下列格式输出的:[左手]([左眼][口][右眼])[右手]现给出可选用的符号集合,请你按用户的要求输出表情。输入格式:输入首先在前三行顺序对应给出手、眼、口的可选符号集。每个符号括在一对方括号 []内。题目保证每个集合都至少有一个符号,并不超过 10 个符号;每个符号包含 1 到 4 个非空字符...原创 2020-03-18 21:48:07 · 122 阅读 · 0 评论 -
B1051 复数乘法
复数可以写成 (A+Bi) 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 i^2=−1;也可以写成极坐标下的指数形式 (R×e^(Pi) ),其中 R 是复数模,P 是辐角,i 是虚数单位,其等价于三角形式 R(cos§+isin§)。现给定两个复数的 R 和 P,要求输出两数乘积的常规形式。输入格式:输入在一行中依次给出两个复数的 R1, P1, R2, P2,数字间以...原创 2020-03-17 21:53:20 · 167 阅读 · 0 评论 -
B1050 螺旋矩阵
本题要求将给定的 N 个正整数按非递增的顺序,填入“螺旋矩阵”。所谓“螺旋矩阵”,是指从左上角第 1 个格子开始,按顺时针螺旋方向填充。要求矩阵的规模为 m 行 n 列,满足条件:m×n 等于 N;m≥n;且 m−n 取所有可能值中的最小值。输入格式:输入在第 1 行中给出一个正整数 N,第 2 行给出 N 个待填充的正整数。所有数字不超过 104 ,相邻数字以空格分隔。输出格式:...原创 2020-03-14 14:17:58 · 232 阅读 · 0 评论 -
B1017 A除以B
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。输入格式:输入在一行中依次给出 A 和 B,中间以 1 空格分隔。输出格式:在一行中依次输出 Q 和 R,中间以 1 空格分隔。输入样例:123456789050987654321 7输出样例:17636684150141093474 3...原创 2020-03-08 18:10:54 · 102 阅读 · 0 评论 -
B1013 数素数
令 Pi表示第 i 个素数。现任给两个正整数 M≤N≤10^4 ,请输出 Pm到 Pn 的所有素数。输入格式:输入在一行中给出 M 和 N,其间以空格分隔。输出格式:输出从 PM 到 PN 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。输入样例:5 27输出样例:11 13 17 19 23 29 31 37 41 43...原创 2020-03-08 17:21:26 · 163 阅读 · 0 评论 -
B1007 素数对猜想
思路:素数对一定是两个奇数,所以在1-n范围内枚举奇数即可C++代码:#include<cstdio>#include<cmath>bool isprime(int n){ if(n<=1) return false; int sqr=(int)sqrt(1.0*n); for(int i=2;i<=sqr;i++){ if(n%i==0)...原创 2020-03-08 17:06:29 · 89 阅读 · 0 评论 -
B1019 数字黑洞
给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的 6174,这个神奇的数字也叫 Kaprekar 常数。例如,我们从6767开始,将得到7766 - 6677 = 10899810 - 0189 = 96219621 - 1269 ...原创 2020-03-06 20:27:03 · 141 阅读 · 0 评论 -
B1003 我要通过!
“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。得到“答案正确”的条件是:字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;如果 aPbTc...原创 2020-03-06 20:12:17 · 195 阅读 · 0 评论 -
B1045 快速排序
著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。 给定划分后的 N 个互不相同的正整数的排列,请问有多少个元素可能是划分前选取的主元?例如给定 N=5N = 5N=5, 排列是1、3、2、4、5。则:1 的左边没有元素,右边的元素都比它大,所以它可能是主元;尽管 3 的左边元素都比它小,但其...原创 2020-03-06 19:21:30 · 130 阅读 · 0 评论 -
B1040 有几个PAT
思路:对于每一个确定位置的A来说,它形成的PAT的个数等于它左边P的个数乘以T的个数,因此对字符串中每个A,计算他左边P的个数乘右边T的个数,然后把所有A的乘积相加;可以利用int型数组记录P的个数和T的个数C代码:#include<stdio.h>#include<string.h>char str[100010];int leftnump[100010]=...原创 2020-03-05 18:25:54 · 72 阅读 · 0 评论 -
B1030 完美数列
给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列。现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列。输入格式:输入第一行给出两个正整数 N 和 p,其中 N(≤105 )是输入的正整数的个数,p(≤109 )是给定的参数。第二行给出 N 个正整数,每个数不超过 109 。...原创 2020-03-05 16:56:57 · 298 阅读 · 0 评论 -
B1005 继续(3n+1)猜想
卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对 n=3 进行验证的时候,我们需要计算 3、5、8、4、2、1,则当我们对 n=5、8、4、2 进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这 4 个数已经在验证3的时候遇到过了,我们称 5、8、...原创 2020-03-03 21:01:34 · 133 阅读 · 0 评论 -
B1047 编程团体赛
编程团体赛的规则为:每个参赛队由若干队员组成;所有队员独立比赛;参赛队的成绩为所有队员的成绩和;成绩最高的队获胜。现给定所有队员的比赛成绩,请你编写程序找出冠军队。输入格式:输入第一行给出一个正整数 N(≤10^4),即所有参赛队员总数。随后 N 行,每行给出一位队员的成绩,格式为:队伍编号-队员编号 成绩,其中队伍编号为 1 到 1000 的正整数,队员编号为 1 到 10 的正整数,成绩...原创 2020-03-03 20:10:03 · 644 阅读 · 0 评论 -
B1043 输出PATest
给定一个长度不超过 104 的、仅由英文字母构成的字符串。请将字符重新调整顺序,按 PATestPATest… 这样的顺序输出,并忽略其它字符。当然,六种字符的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按 PATest 的顺序打印,直到所有字符都被输出。输入格式:输入在一行中给出一个长度不超过 104 的、仅由英文字母构成的非空字符串。输出格式:在一...原创 2020-03-03 19:54:01 · 157 阅读 · 0 评论 -
B1042 字符统计
请编写程序,找出一段给定文字中出现最频繁的那个英文字母。输入格式:输入在一行中给出一个长度不超过 1000 的字符串。字符串由 ASCII 码表中任意可见字符及空格组成,至少包含 1 个英文字母,以回车结束(回车不算在内)。输出格式:在一行中输出出现频率最高的那个英文字母及其出现次数,其间以空格分隔。如果有并列,则输出按字母序最小的那个字母。统计时不区分大小写,输出小写字母。输入样例:...原创 2020-03-03 19:30:18 · 200 阅读 · 0 评论 -
B1039 到底买不买
思路:用int型数组hashTable记录第一串中每种颜色珠子的个数然后枚举第二穿字符串字符,对应hashTable中个数减1,如果该颜色个数小于0,则说明缺少,统计总共缺少的个数C++代码:#include<cstdio>#include<cstring>int hashTable[100]={0};int miss=0;int change(char...原创 2020-03-03 18:39:34 · 146 阅读 · 0 评论 -
B1038
本题要求读入 N 名学生的成绩,将获得某一给定分数的学生人数输出。输入格式:输入在第 1 行给出不超过 105 的正整数 N,即学生总人数。随后一行给出 N 名学生的百分制整数成绩,中间以空格分隔。最后一行给出要查询的分数个数 K(不超过 N 的正整数),随后是 K 个分数,中间以空格分隔。输出格式:在一行中按查询顺序给出得分等于指定分数的学生人数,中间以空格分隔,但行末不得有...原创 2020-03-01 20:50:32 · 118 阅读 · 0 评论 -
B1033 旧键盘打字
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?输入格式:输入在 2 行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过 105 个字符的串。可用的字符包括字母 [a-z, A-Z]、数字 0-9、以及下划线 _(代表空格)、,、.、-、+(代表上档...原创 2020-02-29 21:08:10 · 150 阅读 · 0 评论 -
B1029 旧键盘
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。输入格式:输入在 2 行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过 80 个字符的串,由字母 A-Z(包括大、小写)、数字 0-9、以及下划线 _(代表空格)组成。题目保证 2 个字符串均非空。输出格式:按照发现顺序,在一行中输...原创 2020-02-29 20:19:51 · 178 阅读 · 0 评论 -
B1015 德才论
宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”现给出一批考生的德才分数,请根据司马光的理论给出录取排名。输入格式:输入第一行给出 3 个正整数,分别为:N(≤10^5),即考生总数;L(≥60),为录取最低分数线,即德分和才分均不低于 L 的考生才...原创 2020-02-28 19:08:57 · 132 阅读 · 0 评论 -
B1048 数字加密
本题要求实现一种数字加密方法。首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余——这里用 J 代表 10、Q 代表 11、K 代表 12;对偶数位,用 B 的数字减去 A 的数字,若结果为负数,则再加 10。这里令个位为第 1 位。输入格式:输入在一行中依次给出 A 和 B,均为不超过 100 ...原创 2020-02-28 18:18:47 · 234 阅读 · 0 评论 -
B1024 科学计数法
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[±][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的正负号即使对正数也必定明确给出。现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。输入格式:每个输入包含 1 个测试用例,即一个以科学计数法表示...原创 2020-02-27 18:49:17 · 330 阅读 · 0 评论 -
B1014 福尔摩斯的约会
思路:1.利用字符数组存取字符串,先扫描前两个字符串,找第一对相同位置的A-G的大些字母,然后求出与‘A’的距离,然后再在此基础上继续往后寻找,寻找第一对相同位置0-9或者‘A’–‘N’的字符,转换到0-9或者10-23,同理,在扫描后两个字符串,找的第一对相同位置A-Z或者a-z,并且获取其位置C代码:#include<stdio.h>#include<string....原创 2020-02-27 18:11:11 · 140 阅读 · 0 评论 -
B1002 写出这个数
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100 。输出格式:在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。输入样例:1234567890987654321123456789输出样例:yi san ...原创 2020-02-26 20:46:19 · 113 阅读 · 0 评论 -
B1021 个位数统计
思路:1.以字符数组存储正整数,然后利用数组记录0-9出现次数(数组下标为0-9,值为出现次数)2.字符型的数字转为整数型数字: str [ i ] - ‘0’C++代码:#include<cstdio>#include<cstring>int main(){ char str[1010]; gets(str); int len=strlen(str);...原创 2020-02-24 17:59:26 · 130 阅读 · 0 评论 -
B1006 换个格式输出整数
让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12…n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。输入格式:每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。输出格式:每个测试用例的输出占一行,用规定的格式输出 ...原创 2020-02-24 17:12:33 · 95 阅读 · 0 评论 -
B1037 在霍格沃茨找零钱
如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易。”现在,给定哈利应付的价钱 P 和他实付的钱 A,你的任务是写一个程序来计算他应该被找的零钱。输入格式:输入在 1 行中分别给出 P 和 A,格式为 Galleon.Sickle.Knut,其间用 1 个空格...原创 2020-02-24 17:02:04 · 94 阅读 · 0 评论 -
B1027 打印沙漏
C++代码:#include<cstdio>#include<cmath>int main(){ int n; char c; scanf("%d %c",&n,&c); int bottom=(int)sqrt(2.0*(n+1))-1;//int 强制转换(向下取整) if(bottom%2==0){ bottom--; } ...原创 2020-02-22 21:44:20 · 146 阅读 · 0 评论 -
B1028 人口普查
某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁的老人,而今天是 2014 年 9 月 6 日,所以超过 200 岁的生日和未出生的生日都是不合理的,应该被过滤掉。输入格式:输入在第一行给出正整数 N,取值在(0,105 ];随后 N 行,每行给出 1 个人的...原创 2020-02-22 20:48:17 · 147 阅读 · 0 评论 -
B1004 成绩排名
思路:1.利用结构体存储学生的姓名、学号、成绩2.用max存储最高分的学生,min存储最低分的学生,每次输入就与max、min比较,确定目前最高最低的学生C++代码:#include<cstdio>struct Student{ char name[15]; char id[15]; int score;}temp,max,min;int main(){ int...原创 2020-02-22 20:19:09 · 117 阅读 · 0 评论 -
B1041 考试座位号
思路:1.利用结构体Student存储考生的准考证号和考试座位号,然后利用测试座位号作为结构体数组的下标,这样可以直接通过测试座位号查找考试座位号和准考证号2.准考证号记得用long long int 存储C++代码:#include<cstdio>const int maxn=1010;struct Student{ long long id; int examSe...原创 2020-02-22 11:25:38 · 144 阅读 · 0 评论 -
B1010 一元多项式求导
设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为nxn−1输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0。输入样例:3 4 -5 2 6 1 -2 0...原创 2020-02-21 21:39:42 · 208 阅读 · 0 评论 -
B1018 锤子剪刀布
思路:1.将B C J按照字典序转换成数字,依次对应0 1 2,2.根据B胜C,C胜J,J胜B,假设甲乙的手势转换成对应的数字是k1,k2,则甲胜的条件是:(k1+1)%3= = k2 ,乙胜的条件是:(k2+1)%3== k1,平局条件是:k1==k2;3.判断甲乙获胜次数最多的手势,可以利用变量id1,id2记录次数最多手势所对应的数组序号C++代码:#include<c...原创 2020-02-21 21:22:42 · 147 阅读 · 0 评论 -
B1012 数字分类
思路:1.用数组count[5]存放每一类的个数,最后用于判断是否该类存在2.用数组ans[5]存放每一类C++代码:#include<cstdio>int main(){ int count[5]={0}; int ans[5]={0}; int n,tmp; scanf("%d",&n); for(int i=0;i<n;i++){ scan...原创 2020-02-20 21:20:03 · 276 阅读 · 0 评论 -
B1008 数组元素循环右移问题
思路:1.m=m%n 保证m<n2.根据题目先输出An-m-----An-1 然后再输出A0-----An-m-1 ,注意最后一个后无空格C++代码:```cpp#include<cstdio>int main(){ int n,m; int a[110]; scanf("%d%d",&n,&m); for(int i=0;i<n...原创 2020-02-20 21:02:21 · 288 阅读 · 0 评论 -
B1046 划拳
划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就赢了,输家罚一杯酒。两人同赢或两人同输则继续下一轮,直到唯一的赢家出现。下面给出甲、乙两人的划拳记录,请你统计他们最后分别喝了多少杯酒。输入格式:输入第一行先给出一个正整数 N(≤100),随后 N 行,每行给出一轮划拳的记录,格式...原创 2020-02-20 20:49:29 · 150 阅读 · 0 评论