PAT乙级
StevenAC
努力做一枚有艺术细胞的程序员
展开
-
【PAT乙级1033】——旧键盘打字
思路:err串用于存放坏键,input串存放待输入串;遍历err串,在遍历一个err串时,同时遍历input串,看是input串是否含有err串的字符,如果有则用特殊字符替换(这里我使用'*'替换),整个遍历完成后,遍历输出input串,遇到'*'就不输出!看了解析后,解析思路:利用string类型的find()函数,只需遍历input串,如果input[i]在err串中,则不输出,否则输...原创 2020-02-13 22:02:28 · 195 阅读 · 0 评论 -
【PAT乙级1032】——挖掘机技术哪家强
思路:又是一道类似映射题,定义一个整型数组,下标表示学校编号,值为学校总分,按照输入,对应学校总分相加即可;然后再进行一遍遍历,找出最大的值和学校标号输出即可(其实)这一步可以写在输入的while循环中;代码如下,提交使用g++#include<bits/stdc++.h>using namespace std;int score[100001];int main()...原创 2020-02-13 21:43:54 · 197 阅读 · 0 评论 -
【PAT乙级1031】——查验身份证
思路:看题知意,按照题目意思模拟一下即可;代码如下,提交使用g++#include<bits/stdc++.h>using namespace std;int main(){ int weight[17] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; char check[11] = {'1', ...原创 2020-02-13 21:30:51 · 217 阅读 · 0 评论 -
【PAT乙级1028】——人口普查
思路:规定了最大年龄为200岁,根据今天是2014/9/6,所以最早出生的日期为1814/9/6,只有在这两个时间之间的才是合法的,统计这个的变量自加;每输入一个姓名 年/月/日就和当前的最值年月日比较,这里注意以下逻辑,合理日期内,越接近 2014/9/6年龄越小,否则年龄越大;换句话说,年月日越大,年龄越小;看了解析后,解析思路就是在判断年龄大小时,直接用字符串判断了,清晰明了;解析...原创 2020-02-13 21:20:54 · 210 阅读 · 0 评论 -
【PAT乙级1027】——打印沙漏
控制输入输出题目,自己写的有点复杂,主要是算来算去算的心累;思路:先根据给出的n计算出能打印的最高沙漏需要多少字符,求出多余的,然后找规律分别控制上,中(中间一行),下部分的输出;代码如下,提交使用g++#include<bits/stdc++.h>using namespace std;int main(){ int n, tmp=0, sum=1, row...原创 2020-02-13 21:02:03 · 165 阅读 · 0 评论 -
【PAT乙级1026】——程序运行时间
该题本质就是将一个整数N换成时间hh:mm:ss得到N后转换时间格式有以下两个思路:第一种: hh = N/3600; N = N%3600; mm = N/60; ss = N%60;第二种: ss = N%60; mm = N/60; hh = mm/60; mm = mm%60;其实懂了之后,都一样,只是求得时分秒先后不同;【补漏】某数本该为m位,如果不足...原创 2020-02-13 20:53:43 · 196 阅读 · 0 评论 -
【PAT乙级1023】——组个最小数
思路:将题目所给数字用一维数组num[10]存放,下标对应该数字,值对应该数字的个数,首先找到最小的数字,输出,然后从num[0] 开始遍历,看是否该数字还有,有的话则输出对应值减1;反思:最大的感受就是对于最后结果为类字符串,是否真的需要一个容器先存储下来,等结果求解完毕,再统一输出;在这题中,我是用队列先存储结果,然后统一输出。其实可以不使用队列;代码如下,提交使用g++#inc...原创 2020-02-13 20:37:41 · 197 阅读 · 0 评论 -
【PAT乙级1022】——D进制的A+B
本质还是数的进制转换注意:为了防止结果超出,使用long long类型代码如下,提交使用g++#include<bits/stdc++.h>using namespace std;int main(){ int d; long long num1, num2, sum; stack<int> s; scanf("%lld %lld %d", ...原创 2020-02-13 20:29:02 · 221 阅读 · 0 评论 -
【PAT乙级1021】——个位数统计
简单题思路:组成数字的种类只有[0,1,2,…,9] 共10个,如果使用字符串接收实例数字,遍历每位后映射到一个一维数组,数组值为统计变量;最后按格式输出即可;代码如下,提交使用g++using namespace std;int main(){ string str; int count[10], len; cin >> str; len = str.leng...原创 2020-02-13 20:24:58 · 235 阅读 · 0 评论 -
【PAT乙级1018】——锤子剪刀布
思路:这个题中,要记录的结果比较多,既要记录两个人的胜负平,又要记录每局赢的那个人使用什么赢的,本来想的是在judge函数把这两个结果都保存下来,发现太麻烦。后来想到在judge函数中记录每局两个人的胜负平,而用函数返回值来返回赢的人标号,再在主函数里记录每局赢的那个人使用什么赢的;【补漏】:二维数组作为函数参数怎么传递问题,形参可以有一下两种写法:void Fun(int a[][len...原创 2020-02-13 20:19:49 · 228 阅读 · 0 评论 -
【PAT乙级1017】——A除以B
这个题的本质就是实现一个大整数 除以 一个一位数的除法先期也想到就是实现这种运算,但是对条件的把握不好,以及对这种运算认识不够深刻,再加上自己一直习惯字符串尾部特殊处理,而这题需要头部先处理,自己不太习惯,导致没有写出来;看了解析后,整理思路如下:思路:先处理最高位数,如果商不为0或者大数只有一位,则输出商,然后tmp = 最高位余数;接着就开始做for循环,直到最低位!代码如下,提...原创 2020-02-13 20:04:56 · 186 阅读 · 0 评论 -
【PAT乙级1016】——部分A+B
简单题,编写一个函数求Pa,然后将两个结果相加即可;注意:该题大数输入和结果返回需要用long long 类型;代码如下,提交请选g++#include<bits/stdc++.h>using namespace std;long long Pa(long long num, int d)//求题中Pa{ long long res = 0; int coun...原创 2020-02-13 19:56:35 · 161 阅读 · 0 评论 -
【PAT乙级1013】——数素数
简单题提醒自己一下:1.第一个素数是2;第一个素数是2;第一个素数是2;说三遍应该记住了吧!!!2.判断素数只需看不超过(<=)该数平方根是否有因子;注意:本题输出格式控制,每10个一行,中间空格,最后不能空格;#include<bits/stdc++.h>using namespace std;bool isPrimeNum(int num){ f...原创 2020-02-13 19:45:42 · 173 阅读 · 0 评论 -
四舍五入与进一法
四舍五入一位小数每次刷算法题遇到两数相除要四舍五入一位小数取整的时候,就按照自己的思想:令tmp1等于两数相除整数部分再加0.5;令tmp2等于两数相除精确的值;如果tmp2>=tmp1;则需要进位,否则不需要;祭出了我陈年老代码:#include<stdio.h>int main(){ int a, b, ans; scanf("%d%d", &...原创 2020-02-12 21:33:39 · 2660 阅读 · 0 评论 -
辗转相除法求两数的最大公约数
1.最大公约数也叫最大公因数、最大公因子2.记法:a,b两数最大公约数记为(a, b),对应两数最小公倍数记为[a, b];3.求最大公约数常见方法:质因数分解法、短除法、辗转相除法(又叫欧几里得算法)、更相减损法这里重点介绍辗转相除法求两数的最大公约数,总结一句话就是:用除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数。例子:求1997 和 615 两个正...原创 2020-02-10 18:15:29 · 16558 阅读 · 0 评论 -
【PAT乙级1012】——数字分类
见题知意,但是还是有几点注意的地方思路很容易想到开辟一个数组, 用数组下标表示题中五类数字,然后对给出的每个数字分类处理就好;注意A1:给出的都是正整数,故此类无需做特别处理;A2:因为是交错求和,可能最后和为0,但不代表该类数字没有;A3:简单情况,即题意;A4:现求和,统计个数,最后打印在精确1位小数;A5:简单情况,即题意;代码如下,提交使用g++#include...原创 2020-02-06 00:27:37 · 239 阅读 · 0 评论 -
【PAT乙级1011】——A+B和C
通过这道题,补知识点漏洞知识点输入的数绝对值小于10^9的整数可以使用 int;但如果输入超过时如10^10, 或10^18,可以使用 long long;另外注意输入输出格式控制为%lld;代码如下,提交使用g++#include<bits/stdc++.h>using namespace std;int main(){ int n; scanf("...原创 2020-02-06 00:08:39 · 154 阅读 · 0 评论 -
【PAT乙级1009】——说反话
题目很好理解,但是自己写完提交后,最后一个测试点总是报段错误,一直找不到原因思路将每个单词压栈,最后再推出代码如下(已AC),提交使用g++#include<bits/stdc++.h>using namespace std;int main(){ stack<string> s; string word="", str; /* 为什么这样提...原创 2020-02-05 23:55:57 · 207 阅读 · 0 评论 -
【PAT乙级1008】——数组元素右移问题
题目要求:在不开辟新的数组前提下,实现数组循环右移;自己认为如果数学不好的话(就是我),很难想到下面方法:解释 / 方法n个字符串循环右移m个位置首先,m = m%n;然后执行三次颠倒:1.前n-m个字符串颠倒2.后m个字符串颠倒3.整个字符串颠倒举例5个字符串(abcde)循环右移7个位置首先,m = 7%5,最终m=2;然后执行三次颠倒:1.前n-m=3个字符串颠...原创 2020-02-05 23:46:35 · 233 阅读 · 0 评论 -
【PAT乙级1007】——素数对猜想
题目理解:对于给定N,在不超过N里,若两个相邻素数的差等于2,则为统计目标,统计目标变量count自加1;代码如下,提交使用g++#include<bits/stdc++.h>using namespace std;bool isPrime(int num) //判断是否为素数{ for(int i=2; i<=sqrt(num); i++) { if(...原创 2020-02-05 23:17:59 · 150 阅读 · 0 评论 -
【PAT乙级1003】——我要通过(找规律)
好吧,承认在这题上,自己笨了点,看了半天没发现他要求的字符串是什么规律,看了解释后,才明白的解释如下 下面【】有规律总结,可先看总结;1.任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字⺟ A 组成的字符串;那么正确的有这些:PATAPATAAAPATAAAAAPATAAA…不说了,就是中间⼀个A左右加上等量的A(不加也⾏)都是正...原创 2020-02-05 22:58:46 · 270 阅读 · 0 评论