PTA
PTA乙级练习
北极0735
这个作者很懒,什么都没留下…
展开
-
1018 锤子剪刀布 (20 分)
emmmm。。。我也知道这样写挺蠢的,但确实是不想动脑子了,注意一下都相等的时候输出B就好了#include <iostream>#include <vector>#include <string>using namespace std;int main() { int time; string a, b; vector<int> jia(10, 0); vector<int> yi(10, 0); cin >&.原创 2021-09-06 09:16:06 · 127 阅读 · 0 评论 -
PAT (Advanced Level) Practice 1001 A+B Format (20 分)
这道题就需要做好如何判断”,“点在哪里,不能点在”-“后面,也不能点在最后一个数后面至于这个范围大小可以不用在意,测试点中没有超过范围的数(不要问为什么,问就是挨个测试了)原文:1001 A+B Format (20 分)Calculatea+band output the sum in standard format -- that is, the digits must be separated into groups of three by commas (unless the...原创 2021-08-20 17:25:32 · 108 阅读 · 0 评论 -
PAT (Basic Level) Practice (中文)1015 德才论 (25 分)
这题不难,搞清楚递进的排序关系即可,用到sort函数,这道题告诉我们,写c++能用vector就不要用数组,能用struct就要用struct原题:宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”现给出一批考生的德才分数,请根据司马光的理论给出录取排名。输入格式:输入第一行给出 3 个正整数,分别为:N(≤105),即考生总数;L(≥60),为.原创 2021-08-20 12:38:08 · 70 阅读 · 0 评论 -
PAT (Basic Level) Practice (中文)1016 部分A+B (15 分)
#include <iostream>#include <vector>#include <string>#include <math.h>using namespace std;int main() { string s; int A = 0, B = 0; int a = 0, b = 0; vector<string> vs; while (cin >> s) vs.push_back(s); for .原创 2021-08-20 10:46:01 · 51 阅读 · 0 评论 -
PAT (Basic Level) Practice 1095 解码PAT准考证 (25 分)
这道题其实乍看不难,当你真正上手的时候你会发现,这最后一题是把三道题合在一起让你做出来了,由于时间和初学原因,语法理解不够导致测试点超时(需要改进的地方有很多),等以后再回来改吧。#include <iostream>#include <string>using namespace std;//进行了三次冒泡排序,这样的话时间复杂度很大,后期准备改成快速排序(主要当时貌似就只学过这个:<)void Case1(string a[], int n, int f, .原创 2021-07-19 19:13:20 · 78 阅读 · 0 评论 -
PAT (Basic Level) Practice 1014 福尔摩斯的约会 附测试点错误分析
这个道题可真是小坑太多了,要注意的细节有好多,稍不留神就会出现错误,经验总结如下:1.当小时和分钟只有个位数的时候要记得在个位数之前加0,否则的话测试会有部分错误2.这个题应该在什么时候跳出循环也要搞清楚,要在分别都找到一个后跳出,不能让第二个重复的字母或者数字将前面提取出来的覆盖掉。如果这两点都注意好的话测试一,测试二,测试三,测试四,测试五,测试六的问题就会都解决掉了。原题:大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkgg.原创 2021-07-18 17:31:37 · 544 阅读 · 0 评论 -
PAT (Basic Level) Practice 1013 数素数 (20 分)
这道题与之前1007略有类似,所以我们可以直接把1007的代码拿过来稍作修改做成一个判断从素数并存入数组的函数,这道题我们需要注意的地方有以下三点:1.注意格式问题行最后不能有空格,否则会导致格式错误2.注意数组第一个元素2应先提前写入,因为2不在我们函数判断范围之内(这个错误的话会导致,测试1,测试5,测试6错误)3.我们不需要算出10000个素数,会造成不必要的内存,只算从第一个到第n个就好了原题:让我们定义dn为:dn=pn+1−pn,其中pi是第i.原创 2021-07-18 15:39:56 · 88 阅读 · 0 评论 -
PAT (Basic Level) Practice 1012 数字分类 (20 分)
这道题也不是很难,理好思路,读懂题意就好需要特别注意的点有1.第一个输入的数字是给出整数的个数2.A4求的是和的平均数且带一位小数,本文采用的是setprecision(x)函数(x表示精确到小数点后位)3.A2是交错求和原题:给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:A1= 能被 5 整除的数字中所有偶数的和; A2= 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算n1−n2+n3−n4⋯; A...原创 2021-07-18 11:56:13 · 52 阅读 · 0 评论 -
PAT (Basic Level) Practice 1011 A+B 和 C (15 分)
这道题没有难点,就是有一个小细节,A,B,C的范围,因此我们可以直接用long类型就好#include <iostream>#include <vector>using namespace std;int main(){ vector<long> v; int a,b; cin >> a; for(auto i = 0;i<3*a;++i){ cin >> b; v.原创 2021-07-18 09:46:35 · 81 阅读 · 0 评论 -
PAT (Basic Level) Practice 1010 一元多项式求导
这道题也不难,就是小坑太多,当x为0的时候不能有空格,当零次多项式x为0的时候要输出“0 0”(这个貌似是测试2和测试4的小坑)注意一下这两个小细节就可以全部正确啦。原题:设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为nxn−1。)输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项.原创 2021-07-17 21:19:43 · 51 阅读 · 0 评论 -
PAT (Basic Level) Practice 1009 说反话 (20 分)
这个题用vector做的话还是挺简单的,所以以后碰到这种类型的能用vector就用vector,少用数组!!!原题:给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。输出格式:每个测试用例的输出占一行,输出倒序后的句子。输入样例:Hello Wor原创 2021-07-17 18:57:01 · 53 阅读 · 0 评论 -
PAT (Basic Level) Practice 1008 数组元素循环右移问题
这个题也是很简单,最关键的部分还是读懂题意(他只说了M>0),尤其是你要考虑到M > N的情况,所以我们可以对M进行M = N%M处理,这样M就会小于N啦。原题一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(AN−M⋯AN−1A0A1⋯AN−M−1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设.原创 2021-07-17 17:49:07 · 66 阅读 · 0 评论 -
PAT (Basic Level) Practice 1007 素数对猜想 (20 分)
此题不难,难的地方只有一个小细节,即素数的判断,如果使用2到n-1除的话,会导致运行过慢,无法通过测试5,因此我们需要换一种判断方法,本文采用了平方根的方法,即让其本身与2到根号n相除。原题让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的个数。输入格式:.原创 2021-07-17 17:09:35 · 120 阅读 · 0 评论 -
PAT (Basic Level) Practice 1006 换个格式输出整数 (15 分)
这个方法也很多,用string可以用int也可以#include <iostream>#include <string>using namespace std;int main() { string a; cin >>a; if (a.size() == 3) { for (auto i = 0; i < (a[0] - '0'); ++i) cout << 'B'; for (auto i = 0; i .原创 2021-07-17 12:16:09 · 61 阅读 · 2 评论 -
PAT (Basic Level) Practice 1005 继续(3n+1)猜想 (25 分)
这道题总的来说就是找方法,找对了方法这题就会很简单,找不对可就太麻烦了(由于是初学c++,笔者一开始使用的是数组统计的方法,不仅循环套了一层又一层,而且逻辑还难懂)但是这道题如果用vector来写的话思路就非常简单了,首先是建立一个较大的数组(至少要大于99*3+1),然后将输入的数统计到vector中备用,之后就是本题的核心部分了,通过Callatz函数来计算各个输入的数,途中产生的数全部储存到数组中(以产生的数为下标,令其等于1,即a[x] = 1),而后我们索引vector中的数作为下标,查看数组原创 2021-07-17 11:25:06 · 76 阅读 · 0 评论 -
PAT (Basic Level) Practice 1004 成绩排名 (20 分)
这道题没什么难的,就是对成绩进行一个录入以及排序可以用结构体的数组也可以这样单个的进行冒泡法排列做这种题主要还是多涉及一下知识点,进行熟练#include <iostream>#include <string>using namespace std;struct excl { string name; string No; int mark = 0;};ostream &print(const excl &item) { return.原创 2021-07-16 15:11:22 · 109 阅读 · 0 评论 -
PTA (Basic Level) Practice 1003 我要通过! (20 分)
此题目的核心部分就是要读懂题意,找出规律,到底是怎样的PAT可以‘YES’?由AAPATAAAAPAATAAAA都是‘YES’以及根据条件,我们判断出,当P前面的A*P和T中间的A = T后面的A时这个答案才会正确原题如下:“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。得到“答案正确”的条件是:字符串中必须仅有P、A、T这三种字符,不可以包含...原创 2021-07-16 11:39:25 · 137 阅读 · 0 评论 -
PTA (Basic Level) Practice 1002 写出这个数 (20 分)
这道题也算是比较考察小白细节的一道题吧,主要是考虑字符串与整型之间的转换在字符后面加一个 “-‘0’”,这样就可以对字符进行整数转换了简单的方法原理是:字符‘0’对应的ASCII码是48,48对应的十六进制数就是0x30,通常我们在编程的时候,用字符转化为数字的时候经常要用到,比如要将‘2’转换为数字2,在语句中这样写就可以了,“ 2 - ‘0’”。这里的2就是数字了。读入一个正整数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:每个测试输入包含 1 个测试...原创 2021-07-16 11:29:32 · 125 阅读 · 0 评论 -
PTA (Basic Level) Practice 1001 害死人不偿命的(3n+1)猜想
乙级练习一这道题的整体思路还是挺清晰也是比较简单的核心部分就是如何连续输入并判断奇偶数#include <iostream>using namespace std;int main() { int a; int b = 0; cin >> a; while (a != 1) { if (a % 2 == 0) a = a / 2; else a = (3 * a + 1) / 2; ++b; } cout << b..原创 2021-07-16 11:23:06 · 64 阅读 · 0 评论