PAT (Basic Level) Practice (中文)
周文略
这个作者很懒,什么都没留下…
展开
-
1056 组合数的和
分析:每个数字在个位数和十位数上都出现了N-1次代码如下#include <iostream>using namespace std;int num[11];int main() { int N; scanf("%d", &N); for(int i = 0; i < N; i++) scanf("%d", &num[i]); int...原创 2019-11-06 17:04:52 · 99 阅读 · 0 评论 -
1050 螺旋矩阵
分析:找m和的时候,m的值从N遍历到srqt(N),找出m和n差值最小的那一对难点在于怎么输出螺旋形,一个想法是按照螺旋形的顺序将排好序的数据依次放入一个二维数组中可以用4个while实现2中步骤代码如下#include <iostream>#include <algorithm>#include <cmath>using namespac...原创 2019-11-06 16:49:40 · 114 阅读 · 0 评论 -
1051 复数乘法
复数乘法过程:代码如下#include <iostream>#include <cmath>using namespace std;int main() { double R1, P1, R2, P2; scanf("%lf %lf %lf %lf", &R1, &P1, &R2, &P2); double A, B;...原创 2019-11-06 16:34:17 · 89 阅读 · 0 评论 -
1045 快速排序
思路一(很瓜的思路):遍历数据的同时更新该数据左边的最大值将原数据从小到大排序后放入另外一个数组中,再将这些数据存在另外一个数组的对应下标里作为右方最小值遍历数据时,若当前右方最小值等于该数据,将对应元素置零,右方最小值变为后边的第一个非零值采用思路一可以求解,然而存放右方最小值的数组大小达到了109,该思路行不通上网查询,参考该博客的思路二,三,写下代码思路2#includ...原创 2019-11-05 22:02:55 · 109 阅读 · 0 评论 -
1049 数列的片段和
分析:20分,暴力求解多半超时,需要降低时间复杂度列出N = 4 的所有子序列(底色黄),找规律(最简方法见最后方,该分析有问题)也就是说,将所有底为黄的数字相加就是要输出的结果了横着看的话,当序列第i个元素i开头,该行的所有和就等于i个i的全序列和(即从第一个元素相加到第i个元素)相加,再减去i之前的所有全序列和所以,在输入时就计算出i的全序列和,放入数组中,就简单了代码如下...原创 2019-11-02 17:16:28 · 123 阅读 · 0 评论 -
1048 数字加密
分析:根据题意,并不难,就是要点在于按要求逐个处理单个数字唯一一点不好处理的是输入的A和B不一定等长,所以还需要在短的字符串前面填充字符,使得二者等长;WA了一次(测试点2和5),因为我用的其他字符填充,查询其他人答案发现需要用’0’填充所以我仍然不知道为什么要填‘0’,按照输入样例的理解,如果对应位上A没有数字,直接输出该位置上的B不就行了吗代码如下#include <i...原创 2019-11-02 15:32:33 · 129 阅读 · 0 评论 -
1044 火星数字
火星人是以 13 进制计数的:分析:题目要求输入数字转化为火星文,或者输入火星文转化为数字从输入样例中可以看出,输入数据类型与个数不可控,需要判断用空格判断输入数据个数,用第一个输入数据的类型来确定输入类型将火星文放在数组中,对应下标是它们对应的数字思路:使用string来读取数据,%c读取第一个数据之后的空白符,确定是回车还是空格,再确定是否读取第二个数据若第一个数据是数字...原创 2019-10-31 16:27:07 · 108 阅读 · 0 评论 -
1042 字符统计
思路:老办法,出现次数放在以对应ASCII码为下标的数组元素里逐个读取字符,不是字母直接跳过,若是大写转小写#include <iostream>#include <cctype>using namespace std;int asc[130] = {0}; int main() { char ch; while(ch != '\n') { s...原创 2019-10-29 19:09:13 · 86 阅读 · 0 评论 -
1040 有几个PAT
分析:根据题意,对于给定的字符串来说,能组成多少个PAT,关键在于有多少个A对于每个A而言,它能组成的PAT个数是它前面的P个数和后面的T个数的乘积最后把每个A能组成的PAT个数相加即可思路:将字符存入数组的同时统计T个数遍历数组,统计当前出现的P和T的个数当遍历到A时,将P * (T总数-T当前个数)加到和sum中如果sum大于1000000007,取余代码如下#i...原创 2019-10-29 18:43:55 · 78 阅读 · 0 评论 -
1039 到底买不买
思路:用各字符的ASCII码表示下标,数组相应元素表示该字符出现次数代码如下#include <iostream>using namespace std;int num1[130] = {0};int num2[130] = {0};int main() { char ch; scanf("%c", &ch); while(ch != '\n') { ...原创 2019-10-28 15:44:14 · 81 阅读 · 0 评论 -
1038 统计同成绩学生
思路:建立一个数组,每个元素存储其下标对应成绩出现的次数代码如下#include <iostream>using namespace std;int num1[101] = {0}; //存放成绩为下标的人数 int main() { int N; scanf("%d", &N); for(int i = 0; i < N; i++) { in...原创 2019-10-28 15:16:38 · 66 阅读 · 0 评论 -
1037 在霍格沃茨找零钱
思路:直接按照减法算A-P就行代码如下#include <iostream>using namespace std;int swap(int &a, int &b);int main() { int G1, G2, G3, S1, S2, S3, K3, K1, K2; scanf("%d.%d.%d %d.%d.%d", &G1, &...原创 2019-10-28 14:53:21 · 80 阅读 · 0 评论 -
1035 插入与归并
输入样例 1:103 1 2 8 7 5 9 4 6 01 2 3 7 8 5 9 4 6 0输出样例 1:Insertion Sort1 2 3 5 7 8 9 4 6 0输入样例 2:103 1 2 8 7 5 9 4 0 61 3 2 8 5 7 4 9 0 6输出样例 2:Merge Sort1 2 3 8 4 5 7 9 0 6分析:首先写出插入与归并...原创 2019-10-23 22:18:58 · 311 阅读 · 0 评论 -
1034 有理数四则运算
输入样例 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分析:输入保证分子分母是整型范围内的整数,负号只会出现在分子前,分母不为0;需要考虑进行乘积运算过程中是否有溢出的中间数按格式输出两个有理数的最简运算结构;若为负数,需加括号;若除法分母为0,输出Inf思路...原创 2019-10-18 17:22:58 · 285 阅读 · 0 评论 -
1006 换个格式输出整数
题目链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805318855278592代码如下:#include <iostream>using namespace std;int main() { int n; cin >> n; int n1, n2, n3; //n1n...原创 2019-09-22 08:55:42 · 68 阅读 · 0 评论 -
1027 打印沙漏
分析:要求尽可能用掉多的符号,根据沙漏形状,假设第一层需要用n个符号只需满足2 * (1+2+3+…+n) - 1 >= N就满足用掉最多符号了沙漏上半部:第零行空格数为0,符号数为n;第一行空格数为1,符号数为n-2;…所以第i行空格数为i,符号数为n-2*i;沙漏下半部(除去重合部分):第一行符号数为3,空格数为(n-3)/2;第二行符号数为5,空格数为(n-5)/2...原创 2019-10-03 09:33:39 · 84 阅读 · 0 评论 -
1028 人口普查
分析:过滤不合理的数据:超出200岁和未出生找出最年长和最年轻的人思路:用string name[i]存储姓名,string birth[i]存储出生日期过滤出生日期大于2014/09/06,小于1814/09/06的数据统计有效人数,直接比较出生日期代码如下#include <iostream>#include <string>using n...原创 2019-10-03 10:12:54 · 116 阅读 · 0 评论 -
1029 旧键盘
分析:第一行是应该输入的键,第二行是实际输入的键要求输出坏掉的键,每个坏键输出一次,如果坏键是字母,输出大写格式题中规定至少有一个坏键,所以不用考虑坏键数目为0的情况判断坏键:对两行序列的第一个字符开始判断如果相等都往后移一个字符并判断如果不相等,第一行往后移一个字符,第二行不变输出坏键,用一个数组记录所有坏键,有新坏键时先判断是否重复,未重复则将该坏键记录(若坏键是字母,不区...原创 2019-10-03 14:35:09 · 180 阅读 · 0 评论 -
1030 完美数列
分析:输出能组成完美序列的最大个数,也就是说需要知道符合条件的最大最小值,还有这两值之间的数字个数考虑将输入序列先排序,再同时从首尾找符合条件的最大最小值,这样也可以用下标来计算最大最小值之间的个数思路:先将N个正整数从大到小排序,这里放到数组num中,下标从1开始,方便理解可以先检验完美序列最大个数为N,也就是说检验num[N]*p是否等于num[1]如果2不成立,检验完美序...原创 2019-10-04 09:55:12 · 84 阅读 · 0 评论 -
1031 查验身份证
输入样例1:432012419880824005612010X19890101123411010819671130186637070419881216001X输出样例1:12010X19890101123411010819671130186637070419881216001X输入样例2:2320124198808240056110108196711301862输出样...原创 2019-10-04 09:57:20 · 118 阅读 · 0 评论 -
1032 挖掘机技术哪家强
分析:用num[n]记录学校编号为n的总分,再输出最大值#include <iostream>using namespace std;int num[100005] = {0};int main() { int N; cin >> N; for(int i = 1; i <= N; i++) { int n, score; cin >...原创 2019-10-04 10:28:03 · 90 阅读 · 0 评论 -
1033 旧键盘打字
分析:输入第一行是坏掉的键(大写字母表示该字母的键坏了,大小写都不能输出),输入第二行是应该输出的字符输出实际输出的字符如果上档键坏了字母就不能输出大写思路:数组bad统计坏键(除去上档键),flag标识上档键好坏数组inpu统计本应输出字符,核对每一个字符是否是坏键,若是将相应字符置为#若上档键已坏,未坏的字母只能输出小写考虑无坏键的情况...原创 2019-10-05 10:36:32 · 148 阅读 · 0 评论 -
1026 程序运行时间
分析:对输入样例验算了一遍首先C2-C1,之后四舍五入得到总秒数sum再将秒数转换为几时几分几秒(注意格式)原创 2019-09-30 12:14:01 · 118 阅读 · 0 评论 -
1024 科学计数法
分析:将输入的实数A分成几部分分别存放根据题意判断这几部分并输出思路(参考输入样例+1.23400E-03,依次读入字符):opt1存储’+’,opt2存储’-’;char s[10000] 存储"1.23400",int num存储"03"符号位:opt1为正就不输出,负就输出opt2为负:左移小数点num位先输出num个0(格式为0.000…),再输出s1(不输...原创 2019-09-30 10:56:44 · 195 阅读 · 0 评论 -
1023 组个最小数
分析:把给定的数字按从小到大排序输出(第一个不能是0)注:考虑考虑输入只有0的情况…(被坑怕了)思路:把输入的数放进一个数组中,循环找最大值并输出,输出后置为-1...原创 2019-09-30 09:30:39 · 82 阅读 · 0 评论 -
1011 A+B 和 C
给定区间 [−2^31 ,2^31 ] 内的 3 个整数 A、B 和 C,请判断 A+B 是否大于 C。输入格式:输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。输出格式:对每组测试用例,在一行中输出 Case #X: true 如果 A+B>C,否则输出 Case #X: false...原创 2019-09-23 08:56:26 · 74 阅读 · 0 评论 -
1010 一元多项式求导
设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为nxn−1 。)输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0。输入样例:3 4 -5 2 6 1 -...原创 2019-09-22 15:04:37 · 88 阅读 · 0 评论 -
1009 说反话
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。输出格式:每个测试用例的输出占一行,输出倒序后的句子。输入样例:Hello World Here I Com...原创 2019-09-22 11:01:04 · 71 阅读 · 0 评论 -
1008 数组元素循环右移问题
一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0 A1 ⋯AN−1 )变换为(AN−M ⋯AN−1 A0 A1 ⋯AN−M−1 )(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格...原创 2019-09-22 10:32:30 · 134 阅读 · 0 评论 -
1007 素数对猜想
题目链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805317546655744思路:找出N的所有素数并放在一个数组中,然后计算dn就行#include <iostream>#include <cmath>using namespace std;int prime[50000]; ...原创 2019-09-22 10:18:51 · 59 阅读 · 0 评论 -
1005 继续(3n+1)猜想
题目链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805320306507776思路:用一个数组记录各个数字的状态(是否是关键字)。从第一个数推导,将其覆盖的所有数都更改状态。推导之后的数时先验证状态。...原创 2019-09-20 16:40:20 · 82 阅读 · 0 评论 -
1004 成绩排名
链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805321640296448思路,直接比较,用两个string数组和一个int数组,比较后输出相应下标出现问题:VS里C++数组长度不支持变量解决方法:①用new运算符分配内存(不太熟练,不敢用)②把数组长度开大点,这里是1000代码:#include ...原创 2019-09-20 09:31:10 · 61 阅读 · 0 评论 -
1003 我要通过!
题目链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805323154440192思路如下:1.首先从输入样例可知P、A、T三者有任一一个未出现就No,出现三者以外的字符也是No2.根据条件2,PAT满足条件,按照条件3中aPbTc的格式,此时a=0,b=A,c=0,则同样满足条件的aPbATca格式是PAAT...原创 2019-09-19 18:16:43 · 75 阅读 · 0 评论 -
1002 写出这个数 (20 分)
https://pintia.cn/problem-sets/994805260223102976/problems/994805324509200384思路:计算出和(sum)后,因为不知道具体位数,所以从sum的末位往前开始,分别放入数组num2中,再将num2中元素从后往前输出对应字符串#include <iostream>#include <string>u...原创 2019-09-19 11:10:13 · 94 阅读 · 0 评论 -
1012 数字分类
给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:A1 = 能被 5 整除的数字中所有偶数的和;A2 = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即算 n1 −n2 +n3 −n4 ⋯;A3 = 被 5 除后余 2 的数字的个数;A4 = 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;A5 =...原创 2019-09-25 11:18:42 · 84 阅读 · 0 评论 -
1013 数素数
令 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 7...原创 2019-09-25 12:47:48 · 96 阅读 · 0 评论 -
1022 D进制的A+B
分析:其实就是把十进制数A+B的和转换为D进制数模拟十转二的除基取余法思路:为了防止不必要的麻烦,A和B还是用long吧除基取余:将A+B的和除以D,取每次的余数,直到商为0...原创 2019-09-28 12:27:17 · 60 阅读 · 0 评论 -
1021 个位数统计
分析:N最大1000位,果断string再用一个数组num统计各个数字出现次数#include <iostream>#include <string>using namespace std;int main() { string N; cin >> N; int len = N.size(); int num[10] = {0}; ...原创 2019-09-28 11:15:19 · 70 阅读 · 0 评论 -
1020 月饼
输入样例:3 2018 15 1075 72 45输出样例:94.50分析:(一开始以为要DP,吓得想跳题,5s后发现想多了)计算每种月饼的单价(一个获利多少)先把最高的卖完,再把第二高的卖完,直到达到市场需求量思路:用一个数组num记录各种月饼的库存用一个数组pro记录各种月饼的单价这里在输入第三行的时候,每读取一个数字就计算相应单价最后按照分析2进行分配#...原创 2019-09-28 11:01:02 · 64 阅读 · 0 评论 -
1019 数字黑洞
输入样例 2:2222输出样例 2:2222 - 2222 = 0000分析:特殊情况:正整数N的四位数全相同,直接输出N - N = 0000N的四位数不完全相同,需要按题意输出计算步骤,直到差等于6174计算步骤格式:A - B = C其中A(B)是上一个C的4个数字非递增(减)排序得到的新数,第0个C是N由输入样例1知,非递增排序就是递减排序(相同的数碍着放),同理非递...原创 2019-09-28 10:03:54 · 101 阅读 · 0 评论