![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
PAT乙级-20分
PAT
Luck66Max
“放弃很容易,但坚持一定很酷!”
展开
-
1094 谷歌的招聘 (20 分)
判断素数的函数还是要记一下子原创 2021-09-22 17:36:21 · 56 阅读 · 0 评论 -
1093 字符串A+B (20 分)
用数组hash标记一下是否是第一次输出即可(字符本身是一个ASCII码值,可当作整数用)原创 2021-09-22 16:46:12 · 67 阅读 · 0 评论 -
1092 最好吃的月饼 (20 分)
1092题解~今天正好是中秋节,恰好也做到了这一题,真是缘分呀~~~今天也非常非常非常开心,爱身边的每一个人!继续保持好心情学习!# include <bits/stdc++.h>using namespace std;int main() { #ifdef ONLINE_JUDGE#else freopen("1.txt", "r", stdin);#endif int n,m,tmp; cin>>n>>m;原创 2021-09-21 23:14:36 · 55 阅读 · 0 评论 -
1089 狼人杀-简单版 (20 分)
我自己确实想到了这个思路的前半部分,即,通过输入的数字的正负与由此得出的好人狼人的符号来判断谁在撒谎,但是后面的`if(lie.size()==2&&Class[lie[0]]*Class[lie[1]]<0)`确实没有想到,也就是判别条件。这一条件正是题意得出的:2个人撒谎,一个好人,一个狼人。原创 2021-09-21 23:12:04 · 121 阅读 · 0 评论 -
1088 三人行 (20 分)
题目子曰:“三人行,必有我师焉。择其善者而从之,其不善者而改之。”本题给定甲、乙、丙三个人的能力值关系为:甲的能力值确定是 2 位正整数;把甲的能力值的 2 个数字调换位置就是乙的能力值;甲乙两人能力差是丙的能力值的 X 倍;乙的能力值是丙的 Y 倍。请你指出谁比你强应“从之”,谁比你弱应“改之”。输入格式:输入在一行中给出三个数,依次为:M(你自己的能力值)、X 和 Y。三个数字均为不超过 1000 的正整数。输出格式:在一行中首先输出甲的能力值,随后依次输出甲、乙、丙三人与你的关系:如果其比原创 2021-09-20 16:35:56 · 43 阅读 · 0 评论 -
1087 有多少不同的值 (20 分)
由于`i/2+i/3+i/5`这个表达式计算出的值很有可能远远超出num的下标范围,所以用hash这种方式不可。而且占的内存也很大!原创 2021-09-20 15:43:34 · 80 阅读 · 0 评论 -
1084 外观数列 (20 分)
问题就出在第3个for循环上!!!它下面的不是循环体!!!而是单独一条语句Orz意思是:当出现不相同的字符之后,再去执行将当前字符与差值转换成的字符串添加到val里去!学到了学到了,这种用法自己平时也是用的少吧原创 2021-09-20 15:30:32 · 56 阅读 · 0 评论 -
1083 是否存在相等的差 (20 分)
1083题解这题也好简单。#include <bits/stdc++.h>using namespace std;int num[10000];int main(){#ifdef ONLINE_JUDGE#else freopen("1.txt", "r", stdin);#endif int n,x,y,max=0,min=10000; cin>>n; for(int i=1;i<=n;i++){ ci原创 2021-09-15 23:02:35 · 50 阅读 · 0 评论 -
1082 射击比赛 (20 分)
1082题解这题好简单。#include <bits/stdc++.h>using namespace std;int main(){#ifdef ONLINE_JUDGE#else freopen("1.txt", "r", stdin);#endif string s,maxstr,minstr; int n,x,y,max=0,min=10000; cin>>n; for(int i=0;i<n;i++){原创 2021-09-15 12:03:34 · 51 阅读 · 0 评论 -
1079 延迟的回文数 (20 分)
107918分答案如果两个数的和过大,就会报错如下:terminate called after throwing an instance of 'std::out_of_range' what(): stoll原因:应该是超出了long long int x+y 的范围。#include <bits/stdc++.h>using namespace std;bool paliNum(string s){ string v=s; reverse(s.begin(原创 2021-09-15 00:03:10 · 111 阅读 · 0 评论 -
1078 字符串压缩与解压 (20 分)
分析思路很巧妙~柳神分析:1 解压时,cnt初始值为1,若遇到数字则将字符串数字转化为int型数字cnt,之后输出cnt次当前字母。2 压缩时,用pre保存前一个字母,当当前字母与pre相同时,cnt++;否则输出cnt(cnt>=2时才需输出cnt)和pre,然后令pre=当前字母。最后别忘记结尾处理:当cnt>=2时输出cnt,然后输出pre解压这样写只能输出个位数的数字,而超过9的就不好使了…for(int i=0; i<s.length(); i++){原创 2021-09-14 11:58:06 · 156 阅读 · 0 评论 -
1077 互评成绩计算 (20 分)
maxn和minn分别保存最高分和最低分。将所有其他组评分中的有效分数累加到g1,最后减去minn和maxn并求平均分,最后求得最终得分。原创 2021-09-14 00:09:36 · 71 阅读 · 0 评论 -
1074 宇宙无敌加法器 (20 分)
1074正确答案这个flag真是一石二鸟~#include <bits/stdc++.h>using namespace std;int main(){ #ifdef ONLINE_JUDGE#else freopen("1.txt", "r", stdin);#endif string n,a,b; bool flag=false; cin>>n>>a>>b; reverse(n.begin原创 2021-09-11 01:43:12 · 86 阅读 · 0 评论 -
1073 多选题常见计分法 (20 分)【回顾】
1073分析本来以为这题跟1058题目都差不多的,看来是我想多了Orz异或是怎么想到的,tql又是抄柳神答案的一题0.0柳神分析:错误是指错选或者漏选。用异或运算来判断一个选项和正确选项是否匹配,如果是匹配的,那么异或的结果应当是0;如果不匹配,那么这个选项就是存在错选或者漏选的情况~例如:设a为00001,b为00010,c为00100,d为01000,e为10000,如果给定的正确答案是ac,即10001,那么如果给出的选项也是10001,异或的结果就是0;如果给出的选项是a或者ab,即00原创 2021-09-11 00:29:01 · 88 阅读 · 0 评论 -
1072 开学寄语 (20 分)
1072题解终于!比较顺地做出来一道题!YEAH!!感觉自己的思路还是比较顺的~#include <bits/stdc++.h>using namespace std;int main(){#ifdef ONLINE_JUDGE#else freopen("1.txt", "r", stdin);#endif int n,m,k; cin>>n>>m; string student; unordered_se原创 2021-09-09 16:54:37 · 62 阅读 · 0 评论 -
1069 微博转发抽奖 (20 分)
1.根据不同条件需求修改for循环中i的步长~2.std::unordered_set其和std::set不同的一点是,前者是没有顺序的,而后者会对元素顺序进行排序。原创 2021-09-09 16:07:59 · 66 阅读 · 0 评论 -
1068 万绿丛中一点红 (20 分)
vector二维数组的表示与初始化 ```cppvector<vector<int>> v;//注意这里的m、n必须要事先输入v.resize(n,vector<int>(m));``` 2. 求坐标的周围8个坐标原创 2021-09-08 23:43:08 · 53 阅读 · 0 评论 -
1067 试密码 (20 分)
1067题解对用户的每个输入,如果是正确的密码且尝试次数不超过 N,则在一行中输出 Welcome in,并结束程序;如果是错误的,则在一行中按格式输出 Wrong password: 用户输入的错误密码;当错误尝试达到 N 次时,再输出一行 Account locked,并结束程序。注意测试点2.5:输入的密码可能有空格,不要用cin,而是getline测试点4:注意审题!错误次数达到N,再输出一行 Account locked,并结束程序。正确题解#include <bits/s原创 2021-09-07 19:51:35 · 146 阅读 · 0 评论 -
1064 朋友数 (20 分)
set:内部自动排序+不含重复元素!YYDS!原创 2021-09-07 00:07:06 · 44 阅读 · 0 评论 -
1063 计算谱半径 (20 分)
1063题解震惊!这道题也太简单了!#include <bits/stdc++.h>using namespace std;int main(){ int n; cin>>n; double a,b,max=0,tmp; for(int i=0;i<n;i++){ cin>>a>>b; tmp=sqrt(a*a+b*b); if(tmp>max)原创 2021-09-06 22:50:54 · 51 阅读 · 0 评论 -
1062 最简分数 (20 分)【回顾】
1062分析柳神分析:使用辗转相除法gcd计算a和b的最大公约数,因为要列出n1/m1和n2/m2之间的最简分数,但是n1/m1不一定小于n2/m2,所以如果n1 * m2 > n2 * m1,说明n1/m1比n2/m2大,则调换n1和n2、m1和m2的位置~假设所求的分数分母为k、分子num,先令num=1,当n1 * k >= m1 * num时,num不断++,直到num符合n1/m1 < num/k为止~然后在n1/m1和n2/m2之间找符合条件的num的值,用gcd(num,原创 2021-09-06 00:36:16 · 103 阅读 · 0 评论 -
1059 C语言竞赛 (20 分)【回顾】
1059分析柳神分析:ran数组标记每个id对应的排名,集合ss存储所有已经询问过的id,如果发现当前id已经出现在ss中,则输出“Checked”,如果ran[id] == 0说明当前id不在排名列表中,所以输出“Are you kidding?”,如果ran[id]为1则输出“Minion”,如果ran[id]为素数则输出“Mystery Award”,否则输出“Chocolate”题解#include <iostream>#include <set>#include原创 2021-09-06 00:33:09 · 55 阅读 · 0 评论 -
1058 选择题 (20 分)
1058分析分析:n个学生,m道题目。对于每一道题目,将题目的总分存储在total[i]数组里面,将题目的选项插入存储在right[i](为集合类型)里面。wrongCnt[i]存储第i道题错误的人数,对于n个学生,每一个学生的答案插入一个集合st里面,比较st与right[i]是否相等,如果相等说明该生答对了,他的score += total[i](加上当前题目的总分),如果该生答错了,wrongCnt[i]++,表示第i道题新增一个错误的人。输出每一个学生的得分;遍历wrongCnt数组,求wron原创 2021-09-04 23:45:22 · 84 阅读 · 0 评论 -
1057 数零壹 (20 分)
1057题解终于靠自己解了一题Orz,可能是题水吧哈哈知识点string的大小写转换#include <bits/stdc++.h>using namespace std;int main(){ int sum=0; int x=0,y=0; string a; getline(cin,a); transform(a.begin(),a.end(),a.begin(),::tolower); for(int i=0;i<a.原创 2021-09-04 21:03:37 · 55 阅读 · 0 评论 -
1054 求平均值 (20 分)
1054sscanf与sprintfsscanf() – 从一个字符串中读进与指定格式相符的数据sprintf() – 字符串格式化命令,主要功能是把格式化的数据写入某个字符串中题解(…柳神代码又是参考的柳神的,因为柳神写的太好了呜呜#include<bits/stdc++.h>using namespace std;int main(){ int n,cnt=0; char a[50],b[50]; double num,sum=0.0;原创 2021-09-04 00:59:04 · 70 阅读 · 0 评论 -
1053 住房空置率 (20 分)
关于double的printf输出格式在c语言中,double类型的读入必须用"%lf";输出必须用"%f"原创 2021-09-02 22:46:15 · 43 阅读 · 0 评论 -
1052 卖个萌 (20 分)
截取[ ]之间的表情子串的写法getline(cin,s)读取含空格的字符串原创 2021-09-02 22:36:42 · 95 阅读 · 0 评论 -
1049 数列的片段和 (20 分)
long double 使用%Lf或者%llf原创 2021-08-31 10:19:22 · 117 阅读 · 0 评论 -
1048 数字加密 (20 分)
如果a.length()<b.length(),相减后得到的值应该强制转换原创 2021-08-27 23:39:25 · 95 阅读 · 0 评论 -
1047 编程团体赛 (20 分)
1047题解#include <bits/stdc++.h>using namespace std;//num数组长度为团队编号长度:1000以内int num[1001];int main(){ int n; scanf("%d",&n); while(n--) { int team,mem,score; scanf("%d-%d %d",&team,&mem,&score);原创 2021-08-27 21:14:10 · 68 阅读 · 0 评论 -
1044 火星数字 (20 分)
1044题解#include <bits/stdc++.h>using namespace std;string a[13]= {"tret", "jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"};string b[13]= {"xxxx", "tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "原创 2021-08-26 23:57:40 · 53 阅读 · 0 评论 -
1043 输出PATest (20 分)
1043题解好蠢啊,找了半天bug发现忘记每次让sum为0了,否则会一直加下去,然后跳不出循环Orz#include <bits/stdc++.h>using namespace std;int num[100];int main(){ string s; cin>>s; for(int i=0; i<s.length(); i++) { num[s[i]]++; } string a="PATes原创 2021-08-26 21:29:00 · 51 阅读 · 0 评论 -
1042 字符统计 (20 分)
1042题解#include <bits/stdc++.h>using namespace std;int num[26];int main(){ string str; getline(cin,str); int max=0; for(int i=0; i<str.length(); i++) { //将字母全部转换为数字,存入num[]数组中 if(str[i]>='a'&&st原创 2021-08-25 23:34:10 · 51 阅读 · 0 评论 -
1039 到底买不买 (20 分)
1039题解#include <bits/stdc++.h>using namespace std;int num[100];int main(){ int sum=0; string str1,str2; cin>>str1>>str2; for(int i=0;i<str1.length();i++) { num[str1[i]]++; } for(int i=0;i<s原创 2021-08-25 23:07:25 · 51 阅读 · 0 评论 -
1038 统计同成绩学生 (20 分)
1038C++数组初始化为0部分内容引自1.全局变量int sum[1000006];//初始化设默认值为02.局部变量默认值只能设为0,且只有在初始化时,才能设为0(sum[100]={0};这么写就是错的);如果设为1,则只是sum[0]是1,其他默认全为0;int sum[100]={0};//只能设为0题解用cin、cout又又又超时了…所以换成了scanf、printf…#include <iostream>using namespace std;in原创 2021-08-24 22:34:09 · 49 阅读 · 0 评论 -
1037 在霍格沃茨找零钱 (20 分)
转换成最小单位统一进行换算原创 2021-08-24 21:59:42 · 113 阅读 · 0 评论 -
1034 有理数四则运算 (20 分)
分数四则运算模板原创 2021-08-23 22:39:44 · 86 阅读 · 0 评论 -
1033 旧键盘打字 (20 分)
不能用cin>>str1>>str2的原因原创 2021-08-23 22:38:23 · 51 阅读 · 0 评论 -
1032 挖掘机技术哪家强 (20 分)
基本方法求最值原创 2021-08-20 23:46:07 · 68 阅读 · 0 评论 -
1029 旧键盘 (20 分)
1029题解#include <bits/stdc++.h>using namespace std;int main(){ string str1,str2; bool HashTable[128]={false}; cin>>str1>>str2; for(int i=0;i<str1.length();i++) { int j; char c1,c2; for(原创 2021-08-20 23:17:00 · 97 阅读 · 0 评论