PAT - Practice【乙级】
PAT - 乙级
懒狗的救赎
HUMBLE.
展开
-
7-5 子串与子列 (25 分)【测试点分析】【PAT(乙级)2020年冬季考试】
测试点:测试点4:为了防止超时,及时break;测试点6:遍历的最大范围。代码:#include <iostream>#include <cstring>#include <cstdio>#include <map>using namespace std;int main(){ char s[10005],p[10005]; scanf("%s %s",s,p); int t; int len1=strle原创 2021-03-12 22:11:22 · 667 阅读 · 0 评论 -
7-3 舍入 (20 分)【PAT(乙级)2020年冬季考试】
分析:分析个锤子!这题就够离谱的,下意思觉得不难,但是真的巨复杂。代码(13分):#include <iostream>#include <cstring>#include <cstdio>#include <map>using namespace std;int main(){ int n,d,t; cin>>n>>d; char a[205]; while(n--){原创 2021-03-12 22:08:04 · 420 阅读 · 0 评论 -
1095 解码PAT准考证 (25 分)
辣鸡的未AC代码:#include <iostream>#include <cstring>#include <algorithm>#include <vector>using namespace std;typedef struct{ char all[15]; int room,day,num; char type; int sco;}stu;typedef struct{ int ad,ns;原创 2021-03-12 16:47:12 · 83 阅读 · 0 评论 -
1094 谷歌的招聘
#include <iostream>#include <cstring>#include <algorithm>using namespace std;bool prime(long n){ for(long j=2;j*j<=n;j++){ if(n%j==0){ return 0; } } return 1;}int main(){ int l,n;原创 2021-03-12 12:49:31 · 79 阅读 · 0 评论 -
1090 危险品装箱 (25 分)【容易理解的另类解法】
思路:(超时代码)最开始的时候,我用了超时代码(见下文),主要是将一堆冲突的物品作为结构体,每次在判断携带物品的数据时,将结构体内每个物体标记是否携带。最后再循环整个结构体数组,判读是否有冲突。这种方法时间复杂度极高。(AC代码)随后反向思考,为携带的物品做映射,如果带了标记为1。再去循环整个结构体数组,判读两个冲突的物品是否都存在。AC代码:#include <iostream>#include <cstdio>#include <map>using原创 2021-03-12 01:46:28 · 108 阅读 · 0 评论 -
1089 狼人杀-简单版 (20 分)【详细解析版】
柳神代码:#include <iostream>#include <cmath>#include <algorithm>#include <vector>using namespace std;int main(){ int n; cin>>n; int in[105]; //输入的数组 for(int i=1;i<=n;i++){ cin>>in[i]; }原创 2021-03-12 00:37:59 · 286 阅读 · 0 评论 -
1088 三人行 (20 分)【测试点4分析】
思路:甲=!乙甲-乙=x乙/y乙=丙y-> 得出:y*(甲-乙)=x*乙测试点:测试点4:丙可能不是整数,需要用浮点类型存储。代码:#include <iostream>#include <cstring>#include <algorithm>#include <map>using namespace std;int main(){ double m,x,y; cin>>m>>原创 2021-03-11 18:19:15 · 145 阅读 · 0 评论 -
1085 PAT单位排行 (25 分)【测试点4 5的坑点】
坑点:坑爹!!如果对创建结构体数组,明明说小于等于10的5次方,结果多扩10个都会报错,只有多阔100才行。果然大佬这题都用vector…代码:#include <iostream>#include <cstring>#include <algorithm>#include <map>using namespace std;typedef struct{ float sum; int stu; string nam原创 2021-03-11 13:10:39 · 446 阅读 · 0 评论 -
1084 外观数列 (20 分)
#include <iostream>#include <cstring>#include <algorithm>using namespace std;int main(){ char d; int n; cin>>d>>n; char a[100000]={0},b[100000]={0}; a[0]=d; int len=1; int k,v; if(n==1)原创 2021-03-11 11:34:19 · 65 阅读 · 0 评论 -
1079 延迟的回文数 (20 分)
思路:利用string的拼接代码:#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;int judge(string a){ for(int i=0;i<a.length();i++){ if(a[i]!=a[a.length()-i-1]) return 0;原创 2021-03-10 23:54:52 · 64 阅读 · 0 评论 -
1080 MOOC期终成绩 (25 分)
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <map>using namespace std;typedef struct { string num; double pro,mid,fin; int sum; int t1,t2,t3;原创 2021-03-10 17:27:56 · 81 阅读 · 0 评论 -
1078 字符串压缩与解压 (20 分)
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;int main(){ char control,a[1005]; cin>>control; cin.get(); cin.getline(a,1005); if原创 2021-03-10 14:45:18 · 78 阅读 · 0 评论 -
1075 链表元素分类 (25 分)
柳神代码:#include <iostream>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include <vector>using namespace std;typedef struct{ int data,next;}list;vector<int> v[3];int main(){原创 2021-03-05 13:07:00 · 110 阅读 · 0 评论 -
1074 宇宙无敌加法器 (20 分)【测试点5分析】
测试点5:结果为0思路://7 2 5 0////3 1 3 7//5 1 4//1 0 2 7代码:#include <iostream>#include <cstring>#include <algorithm>#include <cmath>#include <map>using namespace std;int main(){ char norm[25]={0},num1[21]={0},n原创 2021-03-05 12:08:21 · 161 阅读 · 0 评论 -
1073 多选题常见计分法 (20 分)
我不认为我这题那里写错了,第5个测试点应该是大数据测试,我自己试试了,在试了试,发现AC过的代码,有点数据对的,有些数据不对的,不知道怎么回事。代码:#include <iostream>#include <cstring>#include <algorithm>#include <cmath>#include <map>using namespace std;typedef struct{ double sco;原创 2021-03-04 18:08:06 · 121 阅读 · 1 评论 -
1068 万绿丛中一点红 (20 分)
#include <iostream>#include <cstring>#include <algorithm>#include <cmath>#include <map>using namespace std;int main(){ int m,n,tol; cin>>m>>n>>tol; int a[1001][1001]={0}; map<int,int原创 2021-03-03 12:39:52 · 70 阅读 · 0 评论 -
1067 试密码 (20分) 【测试点2和5分析】
测试点分析:测试点2:在输入#退出时候,不能输出被锁定;测试点5:密码中可能会包括空格,需要用getline。代码:#include <iostream>#include <cstring>#include <algorithm>#include <cmath>using namespace std;int main(){ string norm,in; int i=0,n,fin=0; cin>>n原创 2021-03-03 11:08:42 · 389 阅读 · 1 评论 -
1065 单身狗 (25 分)【详细分析版】
超时代码:时间复杂度o(n*n),导致超时#include <iostream>#include <cstring>#include <algorithm>#include <cmath>using namespace std;typedef struct{ int a,b; int t1,t2;}couple;int main(){ int n,m,k=0; int s,emp[100000];原创 2021-03-02 14:12:27 · 139 阅读 · 0 评论 -
1060 爱丁顿数 (25 分)
#include <iostream>#include <cstring>#include <cmath>#include <algorithm>using namespace std;bool cmp(int a, int b) { return a > b;}int main() { int n,s[100001]={0},day=0; cin>>n; for(int i=1;i<=n;i++){ /原创 2021-03-01 14:12:47 · 64 阅读 · 0 评论 -
1059 C语言竞赛 (20 分)
#include <iostream>#include <cstring>#include <cmath>#include <algorithm>using namespace std;typedef struct{ int tag,rk,prime; string num;}people;bool prime(int a){ for(int i=2;i<=sqrt(a);i++) if(a%i=原创 2021-03-01 12:51:59 · 73 阅读 · 1 评论 -
1058 选择题 (20 分)
#include <iostream>#include <cstring>#include <cmath>#include <algorithm>using namespace std;typedef struct{ int all,num,f; string ans; int bian;}quiz;bool cmp(quiz a,quiz b){ return a.f>b.f;}int main() {原创 2021-03-01 12:51:29 · 84 阅读 · 0 评论 -
1057 数零壹 (20 分)
思路://5 101//5%2= 1//5/2=2//2%2= 0//2/2=1//1%2= 1//1/2=0//8 1000//8%2= 0//8/2=4//4%2= 0//4/2=2//2%2= 0//2/2=1//1%2= 1//1/2=0代码:#include <iostream>#include <cstdio>#include <string>#include <cstring>#in原创 2021-03-01 11:04:25 · 56 阅读 · 0 评论 -
1055 集体照(25 分)
#include <iostream>#include <cstring>#include <algorithm>#include <cmath>using namespace std;typedef struct{ string name; int high;}student;bool cmp(student a,student b){ if(a.high>b.high) return 1; else if(a.high=原创 2021-02-28 16:48:19 · 69 阅读 · 0 评论 -
1054 求平均值 (20 分)【测试点3】
曹!这题真恶心,把形如“123.”,小数点在最后一位的数也算作合法数了,题目并没有明确说明,找了好久代码一:#include <iostream>#include <cstring>#include <algorithm>#include <cmath>using namespace std;int main(){ int n,k=0; double sum=0,t; cin>>n; char a[100]; for(原创 2021-02-28 14:10:50 · 499 阅读 · 5 评论 -
1051 复数乘法 (15 分)
#include <iostream>#include <cstring>#include <algorithm>#include <cmath>using namespace std;int main(){ double r1,p1,r2,p2; cin>>r1>>p1>>r2>>p2; double a1=r1*cos(p1),b1=r1*sin(p1),a2=r2*cos(p2),b2原创 2021-02-28 11:23:16 · 93 阅读 · 0 评论 -
1050 螺旋矩阵 (25 分)
#include <iostream>#include <cstring>#include <algorithm>#include <cmath>using namespace std;#define RIGHT 1#define DOWN 2#define LEFT 3#define UP 4int main(){ int k,a[10001]={0},m,n,min,b[10001][101]={0}; cin>>k;原创 2021-02-27 21:38:01 · 76 阅读 · 0 评论 -
1049 数列的片段和 (20 分)
超时代码:#include <iostream>#include <cstring>#include <algorithm>using namespace std;double getsum(float *a,int n){ float res=0,sum,k=1; for(int i=0;i<n;i++){ sum=0; for(int j=0;j<=i;j++){ sum+=a[j]; } res+=sum; }原创 2021-02-27 21:37:16 · 90 阅读 · 0 评论 -
1044 火星数字 (20 分)【使用atoi( )函数】
代码:#include <iostream>#include <cstring>#include <cmath>#include <algorithm>using namespace std;int main(){ int n; char low[13][5]={"tret","jan", "feb", "mar", "apr", "may", "jun","jly", "aug", "s原创 2021-02-24 14:45:13 · 70 阅读 · 0 评论 -
1040 有几个PAT (25 分)
暴力方法:#include <iostream>#include <algorithm>using namespace std;int main(){ long long int max=0; char s[100005]; cin.getline(s,100005); for(int i=0;i<strlen(s);i++){ if(s[i]=='P'){ for(int j=i+1;j<st原创 2021-02-23 17:44:42 · 65 阅读 · 0 评论 -
1035 插入与归并 (25 分)
思路:由于这道题排序个数并不多(N<=100),所以我们没必要一定要把这两个排序方法都写出来,我们只需要知道原理,这里我通过STL提供的sort模拟插入和归并排序。测试点:插入排序(测试点0、2、4) 归并排序(测试点1、3、5、6)。代码:#include <iostream>#include <cstring>#include <cmath>#include <algorithm>using namespace std;int原创 2021-02-23 14:12:31 · 88 阅读 · 0 评论 -
1034 有理数四则运算 (20 分)【求最大公约数 - 辗转相除法】
求最大公约数 - 辗转相除法:首先了解求最大公约数的时候,耗时少的方法——辗转相除法,否则本题测试点会超时。#include <iostream>#include <cstring>#include <cmath>#include <algorithm>using namespace std;int get (int a,int b) { // 用其它求gcd的方法, 很可能导致 // 后两个测试点超时, 原因不明 i原创 2021-02-23 10:09:09 · 147 阅读 · 0 评论 -
1030 完美数列 (25 分)
自己的代码A了23分,测试点5没过去。最终参考了柳神的代码:#include <iostream>#include <cstring>#include <cmath>#include <algorithm>using namespace std;int main(){ int n,a[100001]={0},len=0,temp; long p; cin>>n>>p; for(int i=原创 2021-02-21 11:39:41 · 56 阅读 · 0 评论 -
1028 人口普查 (20 分)【测试点分析】
#include <iostream>#include <cstring>#include <cmath>#include <algorithm>using namespace std;int main(){ float x1,y1,x2,y2,a1,b1,a2,b2; float k1,k2,h1,h2; int tag1,tag2; //标记垂直时,两条直线是否重合 while(cin>>x1>原创 2021-02-20 19:09:55 · 266 阅读 · 0 评论 -
1025 反转链表 (25 分)
自己AC代码:#include <stdio.h>#include <stdlib.h>typedef struct { int ad; int data; int next; int sq;}Node;int cmp1(const void *a,const void *b){ Node *pa=(Node*)a; Node *pb=(Node*)b; if(pa->sq<pb->sq)原创 2021-02-17 18:22:01 · 72 阅读 · 0 评论 -
1024 科学计数法 (20 分)
#include <stdio.h>#include <string.h>int main(){ char a[10000]={0}; int i=0,x,tag=1; while(scanf("%c",&a[i])&&a[i]!='E'){ i++; } scanf("%c%d",&a[i+1],&x); if(x==0){ for(int j=1;j&l原创 2021-02-17 14:55:27 · 78 阅读 · 0 评论 -
1022 D进制的A+B (20 分)
思路:代码:#include <stdio.h>void fun(int n,int x){ if(n/x>0) fun(n/x,x); printf("%d",n%x);}int main(){ long a,b,c; int x; scanf("%ld %ld %d",&a,&b,&x); c=a+b; fun(c,x); //数字、进制 return 0;}原创 2021-02-16 22:41:44 · 63 阅读 · 0 评论 -
1020 月饼 (25 分)
#include <stdio.h>#include <math.h>#include <string.h>#include <stdlib.h>typedef struct{ float de; float total; float pr;}mooncake;int cmp(const void *a,const void *b){ mooncake *pa= (mooncake*)a; mooncake原创 2021-02-16 20:29:11 · 93 阅读 · 0 评论 -
1052 卖个萌 (20 分)
#include <stdio.h>#include <string.h>int main(){ char hand[40]={0},eye[40]={0},mouth[40]={0}; int n,a; gets(hand); gets(eye); gets(mouth); scanf("%d",&n); while(n--){ char out[20]; int v=0,flag原创 2021-02-16 14:50:10 · 67 阅读 · 0 评论 -
1019 数字黑洞 (20 分)
#include <stdio.h>#include <stdlib.h>int cmp1(const void *a,const void *b){ int * pa=(int *)a; int * pb=(int *)b; int num1=*pa; int num2=*pb; return num1-num2;}int cmp2(const void *a,const void *b){ int * pa=(int *原创 2021-02-16 11:38:06 · 79 阅读 · 0 评论 -
1018 锤子剪刀布 (20 分)【测试点5注解】
#include <stdio.h>int cmp(char a,char b){ //判断输赢,赢则1,输则-1,平则0 int r; if(a=='C'){ if(b=='C') r=0; else if(b=='J') r=1; else if(b=='B') r=-1; } else if(a=='J'){ if(原创 2021-02-14 23:17:50 · 575 阅读 · 0 评论