PAT 乙级 C++
learn 11233466
这个作者很懒,什么都没留下…
展开
-
PAT 1030.完美数列
1030.完美数列题目描述给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M <= m * p,则称这个数列是完美数列。现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一个完美数列。输入描述:输入第一行给出两个正整数N和p,其中N(<= 105)是输入的正整数的个数,p(<= 109)是给定的参数。第二行给出N个正整数,每个数不超过109。输出描述:在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。输入例子:10 82 3原创 2021-07-03 11:47:57 · 77 阅读 · 0 评论 -
PAT 1029.旧键盘(可以用count 也可用find)记得 find或count 此题会大大便捷
1029.旧键盘(可以用count 也可用find)题目描述旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。输入描述:输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字母A-Z(包括大、小写)、数字0-9、以及下划线“_”(代表空格)组成。题目保证2个字符串均非空。输出描述:按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题原创 2021-06-17 00:25:51 · 127 阅读 · 0 评论 -
PAT 1028.人口普查(不太会,想复杂了,其实利用字符串的比较直接可进行出生日期比较,而无需年月日依次比较)
1028.人口普查 (不太会,想复杂了,其实利用字符串的比较直接可进行出生日期比较,而无需年月日依次比较)题目描述某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。输入描述:输入在第一行给出正整数N,取值在(0, 105];随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的原创 2021-06-15 23:32:11 · 137 阅读 · 0 评论 -
PAT 1027.打印沙漏
1027.打印沙漏题目描述本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印 ***** *** * *** *****所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。输入描述:输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。输出原创 2021-06-13 23:59:39 · 88 阅读 · 0 评论 -
PAT 1026.程序运行时间
1026.程序运行时间题目描述要获得一个C语言程序的运行时间,常用的方法是调用头文件time.h,其中提供了clock()函数,可以捕捉从程序开始运行到clock()被调用时所耗费的时间。这个时间单位是clock tick,即“时钟打点”。同时还有一个常数CLK_TCK,给出了机器时钟每秒所走的时钟打点数。于是为了获得一个函数f的运行时间,我们只要在调用f之前先调用clock(),获得一个时钟打点数C1;在f执行完成后再调用clock(),获得另一个时钟打点数C2;两次获得的时钟打点数之差(C2-原创 2021-06-13 22:49:46 · 73 阅读 · 0 评论 -
PAT 1025.反转链表(不会)
1025.反转链表(不会)看了题解自己写了一遍题目描述给定一个常数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(<= 10 的 5次方)、以及正整数K(<=N),即要求反转的子链结点的个数。结点的地址是5位非负整数,NULL地址原创 2021-06-13 22:23:14 · 97 阅读 · 0 评论 -
PAT 1024.科学计数法(不太会) 涉及字符串查找字符,字符串子串->substr
1024.科学计数法(不太会) 涉及字符串查找字符,字符串子串->substr题目描述科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[±][1-9]"."[0-9]+E[±][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出。现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。输入描述:每个输入包含1个测试用例,即一个以科学计数法表示的实数A。该数字的存储长度不原创 2021-06-06 10:27:31 · 100 阅读 · 1 评论 -
PAT 1023.组个最小数 (类似贪心算法)
1023.组个最小数 (类似贪心算法)题目描述给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。现给定数字,请编写程序输出能够组成的最小的数。输入描述:每个输入包含1个测试用例。每个测试用例在一行中给出10个非负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间用一个空格分隔。10个数字的总个数不超过50,且至少拥有1个非0的数字原创 2021-06-05 10:09:30 · 225 阅读 · 0 评论 -
PAT 1022.D进制的A+B (进制转换)
1022.D进制的A+B (进制转换)#include <iostream>#include <vector>#include <algorithm>using namespace std;#include <vector>int main(){ int a,b,d,r; vector<int> v; long long c; cin>>a>>b>>d;原创 2021-06-05 09:49:04 · 76 阅读 · 0 评论 -
PAT 1020.月饼 (贪心算法) 不太会 主要是要想到用结构体来,否则太乱了 1021.个位数统计 map
1020.月饼 (贪心算法)#include <iostream>#include <vector>#include <algorithm>using namespace std;typedef struct mooncake{ double storage; double total_price;//总售价 double unit_price;//单价}cake;bool mycompare(cake x1,cake x2)原创 2021-06-04 20:57:05 · 61 阅读 · 0 评论 -
PAT 1019.数字黑洞 不太会 主要是字符串转整数stoi 和 数字转字符串to_string 不熟,写的时候没想起来
1019.数字黑洞(不太会)主要是字符串转整数->stoi 和 数字转字符串->to_string 不熟,写的时候没想起来#include <iostream>#include <string>#include <vector>#include <algorithm>using namespace std;bool mycompare(char a,char b){ return a>b;}int main(){原创 2021-06-04 16:59:17 · 74 阅读 · 0 评论 -
PAT 1018.锤子剪刀布
1018.锤子剪刀布题目描述大家应该都会玩“锤子剪刀布”的游戏:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。输入描述:输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方,中间有1个空格。输出描述:输出第1、2行分别给出甲、乙的胜、平、负次数,数字间以1个空格分隔。第3行给出两个字母,分别代表甲、原创 2021-06-04 15:50:10 · 102 阅读 · 1 评论 -
PAT 1017.A除以B 大整数运算(不太会)
1017.A除以B 大整数运算(不太会)题目描述本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。输入描述:输入在1行中依次给出A和B,中间以1空格分隔。输出描述:在1行中依次输出Q和R,中间以1空格分隔。输入例子:123456789050987654321 7输出例子:17636684150141093474 3#include <iostream>#include <strin原创 2021-05-29 22:59:59 · 130 阅读 · 0 评论 -
PAT 1015.德才论 1016.部分A+B
排序部分应再看看1015.德才论题目描述宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”现给出一批考生的德才分数,请根据司马光的理论给出录取排名。输入描述:输入第1行给出3个正整数,分别为:N(<=105),即考生总数;L(>=60),为录取最低分数线,即德分和才分均不低于L的考生才有资格被考虑录取;H(<100),为优先录取线——原创 2021-05-26 21:19:16 · 72 阅读 · 0 评论 -
PAT 1014.福尔摩斯的约会
1014.福尔摩斯的约会题目描述大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”,因为前面两字符串中第1对相同的大写英文字母(大小写有区分)是第4个字母’D’,代表星期四;第2对相同的字符是’E’,那是第5个英文字母,代表一天里的第14个钟头(于是一天的0点到23点由数字0到9、以及大写字母A到N表示原创 2021-05-26 11:38:34 · 89 阅读 · 0 评论 -
PAT 1013.数素数
题目描述令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出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 83 8997 101 103法一:应该是对的,但是超时了#include原创 2021-05-26 10:24:21 · 70 阅读 · 0 评论 -
PAT 1012 数字分类
1012.数字分类(题目在后面)法一:#include <iostream>#include <vector>using namespace std;int main(){ vector<int> v; int a[5]={0},i,sum=0,j=0,flag=0; int x,N; cin>>N; for(i=0;i<N;i++){ cin>>x; v.p原创 2021-05-26 00:08:41 · 103 阅读 · 0 评论 -
PAT 1011 A+B和C
1011.A+B和Cshort:-2^15 ~ 2^15-1int:-2^31 ~ 2^31-1unsigned:0 ~ 2^32-1long:-2^31 ~ 2^31-1long long:-2^63 ~ 2^63-1题目描述给定区间[-2的31次方, 2的31次方]内的3个整数A、B和C,请判断A+B是否大于C。输入描述:输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。输出描述:对每组测试用例原创 2021-05-26 00:04:43 · 65 阅读 · 0 评论 -
PAT 1010 一元多项式求导
1010.一元多项式求导题目描述设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为n*xn-1。)输入描述:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出描述:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。输入例子:3 4 -5 2 6 1 -2 0输出例子:12 3 -10 1 6 0法一:#includ原创 2021-05-25 15:08:38 · 111 阅读 · 0 评论 -
PAT 1009 说反话
1009.说反话题目描述给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入描述:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。输出描述:每个测试用例的输出占一行,输出倒序后的句子。输入例子:Hello World Here I Come输出例子:Come I Here World Hello法一:#include &原创 2021-05-25 12:10:39 · 99 阅读 · 0 评论 -
PAT 1008 数组元素循环右移问题
题目描述一个数组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);第2行输入N个整数,之间用空格分隔。输出描原创 2021-05-25 09:36:17 · 101 阅读 · 0 评论 -
PAT 1007 素数对猜想
1007.素数对猜想#include <iostream>#include <vector>#include <cmath>using namespace std;int isprime(int x){ for(int i=2;i<=sqrt(x);i++){ if(x%i==0)return 0; } return 1;}int main(){ int n,i,flag=0; cin>&g原创 2021-05-24 00:35:16 · 77 阅读 · 0 评论 -
PAT 1006 换个格式输出整数
1006.换个格式输出整数法一:#include <iostream>#include <string>using namespace std;int main(){ string n,str=""; cin>>n; int i,len; len=n.length(); if(len==3){ for(i=0;i<n[0]-'0';i++){ str+='B'; }原创 2021-05-24 00:19:22 · 59 阅读 · 0 评论 -
PAT 1005(不太会)
1005.继续(3n+1)猜想题目描述卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3进行验证的时候,我们需要计算3、5、8、4、2、1,则当我们对n=5、8、4、2进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这4个数已经在验证3的时候遇到过了,我们称5、8、4、2是被3“覆盖”的数。我们称一个数列中的某个数n为“关键数”,如果n不能被数列原创 2021-05-23 23:20:13 · 72 阅读 · 0 评论 -
PAT 1004
1004.成绩排名题目描述读入n名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。输入描述:每个测试输入包含1个测试用例,格式为第1行:正整数n第2行:第1个学生的姓名 学号 成绩第3行:第2个学生的姓名 学号 成绩… … …第n+1行:第n个学生的姓名 学号 成绩其中姓名和学号均为不超过10个字符的字符串,成绩为0到100之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。输出描述:对每个测试用例输出2行,第1行是成绩最高学生的姓名和学号,第2行原创 2021-05-23 16:19:32 · 81 阅读 · 0 评论 -
PAT 1003
1003.我要通过!(有点难,没发现规律,看了题解)题目描述“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。得到“答案正确”的条件是:字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中原创 2021-05-23 15:45:13 · 135 阅读 · 0 评论 -
PAT 乙级 1001 1002
1001.害死人不偿命的(3n+1)猜想题目描述卡拉兹(Callatz)猜想:对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……我们今天的题目不是证明卡拉兹猜想,而是对给定原创 2021-05-23 11:04:52 · 95 阅读 · 0 评论