PAT
..
随兴随缘
算法领域优质创作者
展开
-
22年贵工程程序设计团体赛
文章目录7-1 成绩等级7-2 h0001.Hello World! (5 分)7-3 h0055. 长方体7-4 Jack cheng的烦恼7-5 毕业照7-6 h0045. 限速7-7 弄丢的直角三角形(题目存在一些问题)7-8 自守数7-1 成绩等级PAT考试每年举办三次,分为Top、Advanced和Basic三个级别。小明的公司正在招聘程序员,主要关注Basic这个等级成绩。很多应聘者提供了他们的Basic级别的PAT考试分数。对2016年三次PAT考试的分数做了一番研究之后,小明的公司给出原创 2022-05-22 16:08:24 · 1294 阅读 · 0 评论 -
串的模式匹配 (25 分)
给定两个由英文字母组成的字符串 String 和 Pattern,要求找到 Pattern 在 String 中第一次出现的位置,并将此位置后的 String 的子串输出。如果找不到,则输出“Not Found”。本题旨在测试各种不同的匹配算法在各种数据情况下的表现。各组测试数据特点如下:数据0:小规模字符串,测试基本正确性; 数据1:随机数据,String 长度为105,Pattern 长度为10; 数据2:随机数据,String 长度为105,Pattern 长度为102; 数据3...原创 2022-03-05 22:21:09 · 255 阅读 · 0 评论 -
h0148. 66 (30 分)
定义一个6位二进制数上的运算 @ : a@b=(c,d)。其中 c = a的高3位b的低3位 ; d = a的低3位b的高3位。例如 010 001 @ 011 001 = (010001 , 001011) = (21,13) = (2,3) 。 给出了两个操作数a和b,以及一个数列 x1,x2,x3 ... xn。假设a@b的结果(c,d),数列在区间 [ min(c,d)*min(a,b) ,max(c,d)*max(a,b) ]上的最小值和最大值。如果上述区间上的最大值和最小值可以代表666的程度,原创 2022-03-17 22:33:00 · 629 阅读 · 0 评论 -
先序和后序构造正则二叉树 (20 分)
本题目要求用先序序列和后序序列构造一棵正则二叉树(树中结点个数不超过10个),并输出其中序序列。输入格式:在第一行中输入元素个数。第二行中输入先序序列,用空格分隔。第三行中输入后序序列,用空格分隔。输出格式:输出此正则二叉树的中序序列,用空格分隔,最后也有一个空格。输入样例:510 20 30 40 5020 40 50 30 10输出样例:20 10 40 30 50 #include<bits/stdc++.h>using name原创 2022-03-06 20:07:43 · 1317 阅读 · 0 评论 -
哈夫曼编码 (30 分)
给定一段文字,如果我们统计出字母出现的频率,是可以根据哈夫曼算法给出一套编码,使得用此编码压缩原文可以得到最短的编码总长。然而哈夫曼编码并不是唯一的。例如对字符串"aaaxuaxz",容易得到字母 'a'、'x'、'u'、'z' 的出现频率对应为 4、2、1、1。我们可以设计编码 {'a'=0, 'x'=10, 'u'=110, 'z'=111},也可以用另一套 {'a'=1, 'x'=01, 'u'=001, 'z'=000},还可以用 {'a'=0, 'x'=11, 'u'=100, 'z'=101},原创 2022-03-06 20:05:42 · 404 阅读 · 0 评论 -
符号配对 (20 分)
请编写程序检查C语言源程序中下列符号是否配对:/*与*/、(与)、[与]、{与}。输入格式:输入为一个C语言源程序。当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束。程序中需要检查配对的符号不超过100个。输出格式:首先,如果所有符号配对正确,则在第一行中输出YES,否则输出NO。然后在第二行中指出第一个不配对的符号:如果缺少左符号,则输出?-右符号;如果缺少右符号,则输出左符号-?。输入样例1:void test(){ int i, A[10]; f原创 2022-03-06 18:27:49 · 1043 阅读 · 2 评论 -
打印学生选课清单 (25 分)
假设全校有最多40000名学生和最多2500门课程。现给出每门课的选课学生名单,要求输出每个前来查询的学生的选课清单。输入格式:输入的第一行是两个正整数:N(≤40000),为前来查询课表的学生总数;K(≤2500),为总课程数。此后顺序给出课程1到K的选课学生名单。格式为:对每一门课,首先在一行中输出课程编号(简单起见,课程从1到K编号)和选课学生总数(之间用空格分隔),之后在第二行给出学生名单,相邻两个学生名字用1个空格分隔。学生姓名由3个大写英文字母+1位数字组成。选课信息之后,在一行内给出了原创 2022-03-05 22:08:29 · 209 阅读 · 0 评论 -
h0136. 在线翻译 (25 分)
您刚刚从毕节搬到了一个大城市。这里的人说的是一门不可理解的外语。幸运的是,您有一本字典可以帮助您理解它们。输入格式:输入最多包含100,000个字典条目,后跟一个空白行,然后是最多100,000个单词的消息。每个字典条目都是一行,包含英文单词,后跟一个空格和一个外语单词。在词典中,没有外来词出现多次。该消息是外语单词序列,每行一个单词。输入中的每个单词都是最多10个小写字母的序列。输出格式:输出是将消息翻译成英语,每行一个单词。词典中没有的外来词应翻译为“ eh”。输入样例:dog原创 2022-03-05 20:41:24 · 877 阅读 · 0 评论 -
h0123. 素数判断 (20 分)
在两个连续素数p和p + n之间的n−1连续合数(非素数、不等于1的正整数)序列称为长度为n的素数间隙,如:<24、25、26、27、28>在23和29之间是长度为6的主要差距。 你的任务是编写一个程序来计算一个给定的正整数k,包含k的质数间隙的长度。为了方便,在没有质数间隙包含k的情况下,这个长度被认为是0。输入格式:输入是一个行序列,每个行包含一个正整数。每个正整数都大于1且小于或等于第10万个素数1299709。 输入的结束由包含一个0的行表示。输出格式:输出应该由每行包含原创 2022-03-05 18:31:06 · 273 阅读 · 0 评论 -
h0125. 求sum(2) (15 分)
小宝给你两个数n,k(1<=n,k<=1e6), 定义F(x)为i从1~x, i%k==0的i的和。 现在希望你求出sum, i=1...n F(i)输入格式:输入多组测试数据,每组测试数据给定两个数n,k,以0 0为结束标志。输出格式:每组一行按要求输出的答案输入样例:2 15 30 0输出样例:49#include<bits/stdc++.h>using namespace std;typedef long long LL原创 2022-03-05 18:25:29 · 83 阅读 · 0 评论 -
h0068. 实验 (15 分)
医学部一共进行了N场动物实验。共有三种小动物可用来实验,分别是青蛙、老鼠和兔子。每次实验都会选取其中一种动物来参与实验,选取数量若干。现在请你统计一下医学部一共用了多少小动物,每种分别用了多少,每种动物使用数量占总量的百分比分别是多少。输入格式:第一行包含整数N,表示实验次数。1≤N≤100接下来N行,每行包含一个整数A(表示一次实验使用的小动物的数量)和一个字符T(表示一次实验使用的小动物的类型,’C’表示兔子(coney),’R’表示老鼠(rat),’F’表示青蛙(frog))。原创 2022-03-05 18:21:41 · 141 阅读 · 0 评论 -
h0053. 求一元二次方程的根 (10 分)
利用公式x1 = (-b + sqrt(b* b-4* a* c))/(2* a), x2 = (-b - sqrt(b* b-4* a* c))/(2* a)求一元二次方程ax^2 + bx + c =0的根,其中a不等于0。输入格式:第一行是待解方程的数目n。 其余n行每行含三个浮点数a, b, c(它们之间用空格隔开),分别表示方程ax^2 + bx + c =0的系数。输出格式:输出共有n行,每行是一个方程的根: 若是两个实根,则输出:x1=...;x2 = ... 若两个实根相等,原创 2022-03-05 18:12:45 · 1587 阅读 · 0 评论 -
h0063. 判断闰年 (5 分)
判断某年是否是闰年。输入格式:输入只有一行,包含一个整数a(0 < a < 3000)输出格式:一行,如果公元a年是闰年输出Y,否则输出N输入样例:2006输出样例:N#include<bits/stdc++.h>using namespace std;int main(){ int n; cin>>n; if(n%400 == 0 || n%4 == 0 && n % 1.原创 2022-03-05 17:44:10 · 155 阅读 · 0 评论 -
爱迪生的名言 (5 分)
爱迪生说:“天才是百分之一的灵感和百分之九十九的汗水。”请编写程序,输出这句名言。输入样例注:无输入。输出样例Thomas Edison said, "Genius is 1% inspiration and 99% perspiration!"#include<bits/stdc++.h>using namespace std;int main(){ cout<<"Thomas Edison said, \"Genius is原创 2022-03-05 17:40:22 · 1210 阅读 · 0 评论 -
h0004.双倍 (10 分)
给出2到15个不同的正整数,计算在这些数里面有多少对数满足一个数是另一个数的两倍。比如给出 1 4 3 2 9 7 18 22 答案是3,因为2是1的两倍,4是2的两倍,18是9的两倍。输入格式:输入包括多个测试用例。每个测试用例一行,给出2到15个两两不同且小于100的正整数。每一行最后一个数是0,表示这一行的结束,这个数不属于那2到15个给定的正整数。输入的最后一行仅给出整数-1,这行表示测试用例的输入结束,不用进行处理。输出格式:对每个测试用例,输出一行,给出有多少对数满足其中一个数是原创 2022-03-05 17:36:50 · 499 阅读 · 0 评论 -
h0103. 末日算法 (10 分)
末日算法不是一种计算世界末日的方法。它是数学家约翰·霍顿·康威(John Horton Conway)创造的一种算法,用来计算一周中的哪一天(周一、周二等)对应着一个特定的日期。这个算法基于“世界末日”的思想,即一周中的某一天总是在相同的日期发生。例如,4/4(4月4日),6/6(6月6日),8/8(8月8日),10/10(10月10日)和12/12(12月12日)是世界末日总是发生的日期。每一年都有自己的世界末日。2011年,世界末日是星期一。所以4/4 、6/6、 8/8、 10/10和12/1原创 2022-02-23 16:42:53 · 1864 阅读 · 0 评论 -
h0131. 钞票 (15 分)
在这个问题中,你需要读取一个整数值并将其分解为多张钞票的和,每种面值的钞票可以使用多张,并要求所用的钞票数量尽可能少。请你输出读取值和钞票清单。钞票的可能面值有100,50,20,10,5,2,1。输入格式:输入一个整数n(0<n<1000000)。输出格式:参照输出样例,输出读取数值以及每种面值的钞票的需求数量。输入样例:326输出样例:3263 nota(s) de R$ 100,000 nota(s) de R$ 50,001 nota(原创 2022-02-23 16:38:13 · 6311 阅读 · 0 评论 -
h0118. 最大公约数 (5 分)
给定两个正整数,求它们的最大公约数。输入格式:有多组数据,每行为两个正整数,且不超过int可以表示的范围。输出格式:每行对应输出最大公约数。输入样例:4 88 6200 300输出样例:42100#include<bits/stdc++.h>using namespace std;int main(){ int a,b; while(cin>>a>>b) cout<<__gcd(a,原创 2022-02-23 16:35:24 · 5698 阅读 · 0 评论 -
h0129. 最长单词 (5 分)
一个以’.’结尾的简单英文句子,单词之间用空格分隔,没有缩写形式和其它特殊形式,求句子中的最长单词。输入格式:输入这个简单英文句子,长度不超过500。输出格式:该句子中最长的单词。如果多于一个,则输出第一个。输入样例:I am a student.输出样例:student#include<bits/stdc++.h>using namespace std;int main(){ string s,t; int len = 0;原创 2022-02-23 16:32:34 · 5383 阅读 · 0 评论 -
h0008.卡片延伸长度 (15 分)
您能使一叠在桌子上的卡片向桌子外伸出多远?如果是一张卡片,这张卡片向桌子外伸出卡片的一半长度。(卡片以直角伸出桌子。)如果有两张卡片,就让上面一张卡片向外伸出下面那张卡片的一半长度,而下面的那张卡片向桌子外伸出卡片的三分之一长度,所以两张卡片向桌子外延伸的总长度是1/2 + 1/3 = 5/6卡片长度。依次类推,n张卡片向桌子外延伸的总长度是1/2 + 1/3 + 1/4 + ... + 1/(n + 1)卡片长度:最上面的卡片向外延伸1/2,第二张卡片向外延伸1/3 ,第三张卡片向外延伸1/4,……,最下原创 2022-02-23 16:28:13 · 253 阅读 · 0 评论 -
h0140. 跑步锻炼 (10 分)
小云每天都锻炼身体。正常情况下,小云每天跑 1 千米。如果某天是周一或者月初(1 日),为了激励自己,小云要跑 2 千米。如果同时是周一或月初,小云也是跑 2 千米。小云跑步已经坚持了很长时间,从 1990 年 1 月 1 日周一(含)到 2022 年 2 月 20 日周日(含)。请问某一天小云总共跑步多少千米?输入格式:有多组数据,每行为三个正整数,且不超过小云跑步日期的范围。输出格式:对每一组输入,在一行中输出小云总共跑步多少千米。样例">输入样例:2020 1原创 2022-02-23 16:22:53 · 816 阅读 · 0 评论 -
h0039. 平方数 (15 分)
平方数是一个整数,它的平方根也是一个整数。例如1、4、81是 一些平方数。给定两个数字a和b,请你在a和b之间(包括a和b)找出有多少平方数?输入格式:输入文件最多包含201行输入。每一行包含两个整数a和b (0<a≤ b≤100000)。输入以包含两个零的行结束。这一行不用处理。输出格式:每一行输入产生一行输出。这一行包含一个表示在a和b之间有多少个平方数(包括a和b)。输入样例:1 41 100 0输出样例:23#include<bits/s原创 2022-02-23 16:06:41 · 4810 阅读 · 0 评论 -
宇宙无敌加法器 (20 分)(数组模拟)
地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的。而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”。每个 PAT 星人都必须熟记各位数字的进制表,例如“……0527”就表示最低位是 7 进制数、第 2 位是 2 进制数、第 3 位是 5 进制数、第 4 位是 10 进制数,等等。每一位的进制 d 或者是 0(表示十进制)、或者是 [2,9] 区间内的整数。理论上这个进制表应该包含无穷多位数字,但从实际应用出发,PAT 星人通常只需要记住前 20 位就原创 2022-02-02 12:44:15 · 100 阅读 · 0 评论 -
外星人的一天 (15 分)
地球上的一天是 24 小时。但地球上还有一些精力和勤奋度都远超一般人的大神级人物,他们的“一天”是以 48 小时为周期运转的,这种人被人们尊称为“外星人”。比如普通人的周一早 8:30 是外星人的周一早 4:15;普通人的周二早 9:21 是外星人的周一下午 4:40 —— 对外星人而言,一周的工作时间只有三天(即普通人的周一至周六),周日他们会蒙头大睡恢复体力,时间对他们是没有意义的。在外星人眼里,地球人的时钟对他们而言实在是太不方便了。本题就请你为外星人们实现一款专用时钟。输入格式:输入在一原创 2022-02-02 12:40:44 · 1135 阅读 · 0 评论 -
旅游规划 (25 分)(dijkstra+Floyd两种算法三种写法)
有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编号;D是目的地的城市编号。随后的M行中,每行给出一条高速公路的信息,分别是:城市1、城市2、高速公路长度、收费额原创 2022-01-25 23:11:32 · 218 阅读 · 0 评论 -
c++STL vector的用法详解
vector的用法:#include :头文件vector v:动态变化的一维不定长int数组vector v[1010]:相当于第一维长1010,第二位长度动态变化的int数组push_back 在数组的最后添加一个数据原创 2022-01-02 12:14:19 · 298 阅读 · 0 评论 -
栈合法IO序列
假设以1和0分别表示入栈和出栈操作。栈的初态和终态均为空,入栈和出栈的操作序列可表示为仅由1和0组成的序列,称可以操作且满足栈终态为空的序列为合法序列,否则称为非法序列。例如10110100就是一个合法序列,而10010110是一个非法序列,因为第2次出栈时栈已空,该操作无法进行。 请编写程序判断给定的操作序列是否合法。输入格式:输入为2行,第1行为一个不超过100的正整数n,表示操作序列中操作的个数,第2行为给定的操作序列,为空格间隔的n个整数,每个整数均为0或1。输出格式:输出为一个整数原创 2022-01-07 19:11:48 · 1074 阅读 · 0 评论 -
求链式线性表的倒数第K项
给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。输入格式:输入首先给出一个正整数K,随后是若干非负整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理)。输出格式:输出倒数第K个位置上的数据。如果这个位置不存在,输出错误信息NULL。输入样例:4 1 2 3 4 5 6 7 8 9 0 -1结尾无空行输出样例:7结尾无空行#include<iostream>#include<vector>usi原创 2022-01-05 22:20:10 · 101 阅读 · 0 评论 -
两个有序链表序列的合并
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:1 3 5 -12 4 6 8 10 -1结尾无空行输出样例:1 2 3 4 5 6 8 10结尾无空行#include<原创 2022-01-05 22:17:41 · 421 阅读 · 0 评论 -
两个有序链表序列的交集
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:1 2 5 -12 4 5 8 10 -1结尾无空行输出样例:2 5结尾无空行#include<iostream>.原创 2022-01-05 22:12:02 · 112 阅读 · 2 评论 -
两个有序序列的中位数
已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A0,A1,⋯,AN−1的中位数指A(N−1)/2的值,即第⌊(N+1)/2⌋个数(A0为第1个数)。输入格式:输入分三行。第一行给出序列的公共长度N(0<N≤100000),随后每行输入一个序列的信息,即N个非降序排列的整数。数字用空格间隔。输出格式:在一行中输出两个输入序列的并集序列的中位数。输入样例1:51 3 5 7 92 3 4 5 6结尾无空行输出样例1:原创 2022-01-05 20:25:50 · 352 阅读 · 0 评论 -
牛几 (10 分)
“斗牛”是一种简单的纸牌游戏,玩法如下:对于一副扑克牌,保留A(作为1)、2~10这些牌面的牌;然后每人发5张牌,计算出是牛几(任取3张牌面累加凑成10的倍数,设剩下2张牌面加起来的和S,若S为10的倍数则为双牛,否则用S(S小于10的情况)或用S减去10(S大于10的情况)的结果确定,例如,牌面4 3 4 6 10时,为牛7),然后比谁的牛大,大者胜,小者负,否则为和局。现在给你5张牌,请你算出是牛几。输入格式:首先输入一个整数T(1<=T<20),表示测试组数。 每组测试输入5个整数原创 2022-01-05 16:59:20 · 1341 阅读 · 0 评论 -
凯撒密码 (20 分)
为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,用凯撒密码将其加密后输出。恺撒密码是一种简单的替换加密技术,将明文中的所有字母都在字母表上偏移offset位后被替换成密文,当offset大于零时,表示向后偏移;当offset小于零时,表示向前偏移。输入格式:输入第一行给出一个以回车结束的非空字符串(少于80个字符);第二行输入一个整数offset。输出格式:输出加密后的结果字符串。输入样原创 2022-01-03 22:38:24 · 1669 阅读 · 0 评论 -
输出全排列 (20 分)(dfs模板题)
请编写程序输出前n个正整数的全排列(n<10),并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间。输入格式:输入给出正整数n(<10)。输出格式:输出1到n的全排列。每种排列占一行,数字间无空格。排列的输出顺序为字典序,即序列a1,a2,⋯,an排在序列b1,b2,⋯,bn之前,如果存在k使得a1=b1,⋯,ak=bk并且ak+1<bk+1。输入样例:3结尾无空行输出样例:1231322132313..原创 2022-01-03 00:11:47 · 545 阅读 · 0 评论 -
修建道路(最小生成树)
代码简洁,思路清晰原创 2021-12-23 11:22:51 · 5270 阅读 · 0 评论 -
镖局运镖(最小生成树)
代码简洁,注释清晰原创 2021-12-23 11:16:08 · 227 阅读 · 0 评论 -
并查集【模板】
给出一个并查集,请完成合并和查询操作。输入格式:第一行包含两个整数N、M,表示共有N个元素和M个操作。接下来M行,每行包含三个整数Zi、Xi、Yi。当Zi=1时,将Xi与Yi所在的集合合并。当Zi=2时,输出Xi与Yi是否在同一集合内,是的话输出Y;否则的话输出N。输出格式:对于每一个Zi=2的操作,对应一行输出,每行包含一个大写字母,为Y或者N。输入样例:4 72 1 21 1 22 1 21 3 42 1 41 2 32 1 4原创 2021-12-22 21:44:10 · 469 阅读 · 0 评论 -
大数和(高精度)
给定一些大整数,请计算其和。输入格式:测试数据有多组。对于每组测试数,首先输入一个整数n(n≤100),接着输入n个大整数(位数不超过200)。若n=0则表示输入结束。输出格式:对于每组测试,输出n个整数之和,每个结果单独占一行。输入样例:243242342342342-12345676543210输出样例:42007774688021出处:ZJUTOJ 1214#include<bits/stdc++.h>using namesp原创 2021-12-22 21:37:17 · 1367 阅读 · 1 评论 -
参与者人数(并查集)
临沂大学有很多社团,一个学生可能会加入多个社团。为了活跃大学生业余生活,增强体育运动积极性,临沂大学读书社团决定举行大学生跳绳比赛,要求该社团成员必须参加。为了扩大影响,要求只要其他社团有一个人参加,那么该社团中的每一个人都必须参加。求参加比赛至少多少人?输入格式:输入第一行包含两个整数n和m,n(0 < n <= 30000)表示学生的数目,m(0 <= m <= 500)表示社团的数目。每个学生都有一个唯一的编号,编号取值为0到n-1,编号为0的社团是读书社团。 接下来有原创 2021-12-21 23:25:27 · 151 阅读 · 0 评论 -
先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数
对于给定的二叉树,输出其先序序列、中序序列、后序序列并输出叶子结点数。输入格式:二叉树的先序遍历序列。提示:一棵二叉树的先序序列是一个字符串,若字符是‘#’,表示该二叉树是空树,否则该字符是相应结点的数据元素。输出格式:若是非空二叉树,则输出四行内容 第一行是二叉树的先序遍历序列; 第二行是二叉树的中序遍历序列; 第三行是二叉树的后序遍历序列; 第四行是叶子结点数;若是空二叉树 只需输出叶子数0输入样例1:FCA##DB###EHM###G##结尾无空行输出样例原创 2021-12-20 21:55:52 · 2848 阅读 · 2 评论