PAT乙级刷题集锦
Champhoenix
这个作者很懒,什么都没留下…
展开
-
PAT-B1100(C/C++代码解析)
1100 校庆 (25 分)#include <stdio.h>#include <iostream>#include <string>#include <map>using namespace std;int main (){ int n,m,i,q=0; map<string,int> mp; string s,max; scanf ("%d",&n); for (i=0;i<n;i++) { c原创 2022-03-11 21:15:22 · 807 阅读 · 0 评论 -
PAT-B1096(C/C++代码解析)
1096 大美数 (15 分)#include <stdio.h>int is(int n);int main (){ int i,n,a; scanf ("%d",&n); for (i=0;i<n;i++) { scanf ("%d",&a); if (is(a)==1) printf ("Yes\n"); else printf ("No\n"); } return 0;}int is(int n){ int z原创 2022-03-10 19:06:43 · 317 阅读 · 0 评论 -
PAT-B1101(C/C++代码解析)
1101 B是A的多少倍 (15 分)#include <stdio.h>#include <math.h>int weishu(int n); int main (){ int n,m; scanf ("%d %d",&n,&m); if (weishu(n)==m) printf ("1.00"); else { int l=weishu(n); int ans=n%((int)pow(10,m))*(int)pow(10,l-m)原创 2022-03-10 17:51:08 · 443 阅读 · 0 评论 -
PAT-B1103(C/C++代码解析)
1103 缘分数 (20 分)注意边界,1#include <stdio.h>#include <math.h>long long isPing(long long n);long long yuan(long long n);int main (){ long long m,n,flag=0; scanf ("%lld %lld",&m,&n); for (;m<=n;m++) { long long a=m*m*m-(m-1)*(原创 2022-03-10 16:16:39 · 883 阅读 · 0 评论 -
PAT-B1108(C/C++代码解析)
1108 String复读机 (20 分)#include <stdio.h>#include <string.h>int main (){ char z[10010]; scanf ("%s",z); int l=strlen(z),i,q=0; int a[6]={0}; char out[7]="String"; for (i=0;i<l;i++) { if (z[i]=='S') { a[0]++; q++; } el原创 2022-03-10 13:13:59 · 278 阅读 · 0 评论 -
PAT-B1107(C/C++代码解析)
1107 老鼠爱大米 (20 分)#include <stdio.h>#include <algorithm>using namespace std;int main (){ int i,j,m,n,a,maxx,q=0; scanf ("%d %d",&m,&n); int z[m]; for (i=0;i<m;i++) { maxx=-1; for (j=0;j<n;j++) { scanf ("%d",&原创 2022-03-10 12:35:03 · 202 阅读 · 0 评论 -
PAT-B1106(C/C++代码解析)
1106 2019数列 (15 分)#include <stdio.h>int main (){ int n,i; scanf ("%d",&n); if (n==1) printf ("2"); else if (n==2) printf ("20"); else if (n==3) printf ("201"); else if (n==4) printf ("2019"); else { printf ("2019"); int z[1010原创 2022-03-10 12:22:29 · 151 阅读 · 0 评论 -
PAT-B1102(C/C++代码解析)
1102 教超冠军卷 (20 分)注:结构体,快排#include <stdio.h>#include <algorithm>using namespace std;struct student{ char id[10]; int per; int ren;};bool cmp1 (student a,student b){ return a.ren>b.ren;}bool cmp2 (student a,student b){原创 2022-03-10 00:20:27 · 468 阅读 · 0 评论 -
PAT-B1097(C/C++代码解析)
1097 矩阵行平移 (20 分)#include <stdio.h>int main (){ int i,j,n,k,x,q,sum,t=1; scanf ("%d %d %d",&n,&k,&x); int a[n][n]; for (i=0;i<n;i++) for (j=0;j<n;j++) scanf ("%d",&a[i][j]); for (q=0;q<n;q=q+2) { for (j=n-1;j&原创 2022-03-09 21:49:10 · 233 阅读 · 0 评论 -
PAT-B1098(C/C++代码解析)
1098 岩洞施工 (20 分)注:数学问题#include <stdio.h>#include <math.h>#include <algorithm>using namespace std;int main (){ int n,i; scanf ("%d",&n); int a[n],b[n]; for (i=0;i<n;i++) scanf ("%d",&a[i]); for (i=0;i<n;i++) s原创 2022-03-09 20:59:09 · 343 阅读 · 2 评论 -
PAT-B1099(C/C++代码解析)
1099 性感素数 (20 分)注:素数判断#include <stdio.h>#include <math.h>int sushu(int n);int main (){ int n,i; scanf ("%d",&n); if (sushu(n)==1&&(sushu(n-6)==1||sushu(n+6)==1)) { printf ("Yes\n"); if (sushu(n-6)==1) printf ("%d",原创 2022-03-09 20:32:01 · 317 阅读 · 0 评论 -
PAT-B1025(C/C++代码解析)
1025 反转链表 (25 分)注:静态链表#include <stdio.h>#include <algorithm>using namespace std;const int maxn=100010;struct Node{ int address,data,next; int order;}node[maxn];bool cmp (Node a,Node b){ return a.order<b.order;}int main (){原创 2021-09-29 11:43:38 · 215 阅读 · 0 评论 -
PAT-B1044(C/C++代码解析)
1044 火星数字 (20 分)注:打表,map#include <stdio.h>#include <string>#include <map>#include <iostream>using namespace std;map <string,int> strToNum; //火星文->数字 string digit[13]={"tret","jan","feb","mar","apr","may","jun","j原创 2021-09-23 20:06:00 · 175 阅读 · 1 评论 -
PAT-B1088(C/C++代码解析)
1088 三人行 (20 分)注:丙可能为浮点数#include <stdio.h>#include <string.h>#include <string>#include <iostream>#include <cmath>#include <algorithm>void bi (int a,int b);using namespace std;int main (){ int m,x,y,k,i,yi,f原创 2021-09-18 19:05:13 · 121 阅读 · 0 评论 -
PAT-B1009(C/C++代码解析)
1009 说反话 (20 分)注:简单字符串处理#include <stdio.h>#include <string.h>#include <iostream>using namespace std;int main (){ char ans[888][88]; int i=0; while (scanf ("%s",ans[i])!=EOF) { i++; } for (i=i-1;i>=0;i--) { printf ("%原创 2021-09-18 18:24:18 · 256 阅读 · 0 评论 -
PAT-B1076(C/C++代码解析)
1076 Wifi密码 (15 分)注;简单字符串处理#include <stdio.h>#include <string.h>#include <iostream>using namespace std;int main (){ int i,j,n; char z[88888]; scanf ("%d",&n); getchar(); for (i=0;i<n;i++) { cin.getline(z,88888);原创 2021-09-18 16:38:10 · 194 阅读 · 0 评论 -
PAT-B1024(C/C++代码解析)
1024 科学计数法 (20 分)注:字符串处理#include <stdio.h>#include <string.h>int main (){ char z[100001]; scanf ("%s",z); if (z[0]=='-') printf ("-"); int i,j,l=strlen(z),id,e; for (i=0;i<l;i++) { if (z[i]=='E') { id=i; break; } }原创 2021-09-18 16:09:03 · 137 阅读 · 1 评论 -
PAT-B1051(C/C++代码解析)
1051 复数乘法 (15 分)#include <cstdio>#include <cmath>int main(){ double R1,P1,R2,P2; scanf("%lf %lf %lf %lf",&R1,&P1,&R2,&P2); double a,b; a=R1*R2*(cos(P1+P2)); b=R1*R2*(sin(P1+P2)); if(fabs(a)<0.01)原创 2021-09-18 09:44:10 · 151 阅读 · 0 评论 -
PAT-B1026(C/C++代码解析)
1026 程序运行时间 (15 分)注:简单模拟#include <stdio.h>int main (){ int a,b; scanf ("%d %d",&a,&b); int ans=(b-a)/100,k=(b-a)%100; if (k>=50) ans=ans+1; int shi=ans/3600; printf ("%02d:",shi); ans=ans-shi*3600; int fen=ans/60; printf ("%原创 2021-09-18 09:22:46 · 138 阅读 · 0 评论 -
PAT-B1014(C/C++代码解析)
1014 福尔摩斯的约会 (20 分)注:字符串处理#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;int main (){ char a[88],b[88],c[88],d[88]; int i,j; char week[7][4]={"MON","TUE","WED","THU","FRI","SAT","SUN"}; scanf (原创 2021-09-17 14:51:46 · 186 阅读 · 0 评论 -
PAT-B1006(C/C++代码解析)
1006 换个格式输出整数 (15 分)#include <stdio.h>#include <string.h>int main (){ char z[4]; scanf ("%s",z); int l=strlen(z),i,j; if (l==1) { for (i=1;i<=(z[0]-'0');i++) printf ("%d",i); } else if (l==2) { for (i=0;i<(z[0]-'0');i+原创 2021-09-16 22:42:39 · 162 阅读 · 0 评论 -
PAT-B1015(C/C++代码解析)
1015 德才论 (25 分)注:排序题#include <stdio.h>#include <algorithm>struct student{ int id; int de; int cai;};using namespace std;bool cmp (student a,student b){ if (a.cai+a.de!=b.cai+b.de) return a.de+a.cai>b.de+b.cai; else if (a.de!原创 2021-09-16 13:27:21 · 196 阅读 · 0 评论 -
PAT-B1030(C/C++代码解析)
1030 完美数列 (25 分)注:两种方法1.two pointers#include <stdio.h>#include <algorithm>using namespace std;int main (){ int i,n,p,j=0,dis=0; scanf ("%d %d",&n,&p); long long z[n]; for (i=0;i<n;i++) scanf ("%lld",&z[i]); sort(原创 2021-09-16 00:09:58 · 152 阅读 · 0 评论 -
PAT-B1049(C/C++代码解析)
1049 数列的片段和 (20 分)注:1.数学问题找规律2.测试点2 long double#include <stdio.h>int main (){ int i,n; scanf ("%d",&n); double z[n]; long double ans=0.00; for (i=0;i<n;i++) scanf ("%lf",&z[i]); for (i=0;i<n;i++) { ans=ans+z[i]*(n-i)原创 2021-09-15 13:39:43 · 166 阅读 · 0 评论 -
PAT-B1020(C/C++代码解析)
1020 月饼 (25 分)注:贪心算法#include <stdio.h>//#include <string.#include <algorithm>using namespace std;struct mooncake{ double ton; double yuan; double per;};bool cmp(mooncake,mooncake);int main (){ int n,i; double ans,sum; scanf原创 2021-09-14 23:19:20 · 169 阅读 · 0 评论 -
PAT-B1039(C/C++代码解析)
1039 到底买不买 (20 分)注:散列#include <stdio.h>#include <string.h>int main (){ char shop[1010],eva[1010]; scanf ("%s %s",shop,eva); int i,hash[130]={0},q=0; for (i=0;i<strlen(shop);i++) hash[shop[i]]++; for (i=0;i<strlen(eva);i++) {原创 2021-09-14 17:02:58 · 170 阅读 · 0 评论 -
PAT-B1005(C/C++代码解析)
1005 继续(3n+1)猜想 (25 分)注:散列#include <stdio.h>int main (){ int n,hash[1000001]={0},k=0,ans[1000001]; scanf ("%d",&n); int i,z[n]; for (i=0;i<n;i++) { scanf ("%d",&z[i]); hash[z[i]]=1; } for (i=0;i<n;i++) { while (z[i]!=原创 2021-09-14 16:34:47 · 158 阅读 · 0 评论 -
PAT-B1013(C/C++代码解析)
1013 数素数 (20 分)非筛法#include <stdio.h>#include <cmath>int isPrime (int n);int main (){ int a,b,i,q=0,t=0; scanf ("%d %d",&a,&b); for (i=2;;i++) { if (isPrime(i)) { q++; if (q>=a&&q<=b) { printf原创 2021-09-14 15:54:01 · 154 阅读 · 0 评论 -
PAT-B1019(C/C++代码解析)
1019 数字黑洞 (20 分)#include <stdio.h>#include <algorithm>bool cmp (int a,int b);int tonum (int z[]);void toarray (int n,int z[]);using namespace std;int main (){ int i=0,n,z[5],max,min; scanf ("%d",&n); while (1) { toarray(n,z原创 2021-09-14 14:24:39 · 145 阅读 · 0 评论 -
PAT-B1022(C/C++代码解析)
1022 D进制的A+B (20 分)#include <stdio.h>int main (){ int num[10001],a,b,d,i=0; scanf ("%d %d %d",&a,&b,&d); if (d==10) printf ("%d",a+b); else { int sum=a+b; do{ num[i++]=sum%d; sum=sum/d; }while(sum!=0); int j; fo原创 2021-09-13 19:58:27 · 68 阅读 · 0 评论 -
PAT-B1012(C/C++代码解析)
1012 数字分类 (20 分)注:简单模拟#include <stdio.h>int main (){ int q,n,i,a1=0,max=-1,j=0,a4=0,num1=0,num2=0,num3=0,num4=0,num5=0,a2=0; scanf ("%d",&n); for (i=0;i<n;i++) { scanf ("%d",&q); if (q%5==0&&q%2==0) { a1=a1+q;原创 2021-09-13 19:41:42 · 129 阅读 · 0 评论 -
PAT-B1023(C/C++代码解析)
1023 组个最小数 (20 分)给定数字 0-9 各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意 0 不能做首位)。例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就是 10015558。现给定数字,请编写程序输出能够组成的最小的数。输入格式:输入在一行中给出 10 个非负整数,顺序表示我们拥有数字 0、数字 1、……数字 9 的个数。整数间用一个空格分隔。10 个数字的总个数不超过 50,且至少拥有 1 个非 0 的数字。输出格原创 2021-09-13 12:50:33 · 69 阅读 · 0 评论 -
PAT-B1011(C/C++代码解析)
1011 A+B 和 C (15 分)输入格式:输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。输出格式:对每组测试用例,在一行中输出 Case #X: true如果 A+B>C,否则输出 Case #X: false,其中 X 是测试用例的编号(从 1 开始)。#include <stdio.h>int main (){ int n,i=0; long long a,b,原创 2021-09-12 20:04:04 · 175 阅读 · 0 评论 -
PAT-B1001(C/C++代码解析)
1001 害死人不偿命的(3n+1)猜想 (15 分)卡拉兹(Callatz)猜想:对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……我们今天的题目不是证明卡拉兹猜原创 2021-09-12 19:52:37 · 112 阅读 · 0 评论