![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PAT
杨柳岸晓风
这个作者很懒,什么都没留下…
展开
-
PAT乙级1040 有几个PAT
这里数组较大,尽量减少遍历次数。 本题以A为核心,对“A前所有的P”和“A后所有的T”进行统计然后相乘,得到此A所能构成的PAT数,最后对所有A能构成的PAT数相加得到答案。#include <iostream>#include <string>using namespace std;int main(){ string str; int nump[100000]={0},nu原创 2017-11-27 17:30:36 · 347 阅读 · 0 评论 -
PAT乙级1053 住房空置率
#include <iostream>using namespace std;int main(int argc, char** argv) { int N,D,K,count,countKk=0,countKz=0; float num,e; int flag; cin>>N>>e>>D; for(int i=0;i<N;i++){ cin原创 2017-11-22 21:28:43 · 270 阅读 · 0 评论 -
PAT乙级1027 打印沙漏
1、计算需要打印的行数 2、打印上半部 3、打印下半部#include <iostream>using namespace std;int main(){ int sum[200],num[200],s1=1,s2=0,count=0; int N; char c; sum[count]=1; num[count]=1; cin>>N;原创 2017-12-01 21:43:20 · 358 阅读 · 0 评论 -
PAT乙级1028 人口普查
#include <iostream>#include <string>using namespace std;struct person{ string name; double birth;};int main(){ int N,count=0; char name[6],birth[20]; person Ivan,mi,ma; dou原创 2017-12-01 20:36:06 · 367 阅读 · 0 评论 -
PAT乙级1030 完美数列
这道题我只用了一次遍历,遗憾的是最后一个测试点无法通过,看到有人说最后一个测试点是大数问题,改了数据类型仍然不行,心累。 由于涉及最大最小问题,先对整个数组排序。从第一个元素开始标记,对以后的每个元素进行条件判断,当不满足题目条件,对标记+1,记录此时的数据个数,同时遍历并不需要暂停。这样遍历完成后有一个漏洞就是,如果所有数据满足第一个元素的判定条件,就没有记录数据个数,此时max=0,对这个用I原创 2017-12-01 16:06:25 · 606 阅读 · 0 评论 -
PAT乙级1029 旧键盘
#include <iostream>#include <string>#include <set>using namespace std;int main(){ string str1,str2; char c; set<char> str3; cin>>str1; cin>>str2; for(int i=0,j=0;i<str1.lengt原创 2017-12-01 16:28:30 · 280 阅读 · 0 评论 -
PAT乙级1031 查验身份证
#include <iostream>#include <string>using namespace std;int main(){ int N,sum,z,isPass[100]={0},count=0; int wei[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; char code[]={'1','0','X','9','8',原创 2017-11-30 22:07:38 · 494 阅读 · 0 评论 -
PAT乙级1032 挖掘机技术哪家强
#include <iostream>#include <map>using namespace std;int main(){ map<int,int> node; int N,num,score,maxn=0,maxs=0; cin>>N; for(int i=0;i<N;i++){ cin>>num>>score; if(no原创 2017-11-30 21:16:40 · 618 阅读 · 0 评论 -
PAT乙级1033 旧键盘打字
#include <iostream>#include <string>#include <set> using namespace std;int main(){ string str1,str2,str3; int flag[100000]={0},count=0; getline(cin,str1); getline(cin,str2); set<原创 2017-11-30 21:04:10 · 339 阅读 · 0 评论 -
PAT乙级1055 集体照
注意: 1、排序问题,先按照身高降序,后按名字升序 2、左右排列问题,偶数应该是:4、2、1、3;奇数应该为:4、2、1、3、5#include <iostream>#include <algorithm>#include <vector>#include <string>using namespace std;struct person{ string name; i原创 2017-11-21 17:27:20 · 433 阅读 · 0 评论 -
PAT乙级 1071 小赌怡情
这道题要注意格式,比如 “Win %d! Total = %d.” 另外,如果余额为0,先输出Lose…… 紧接着输出Not enough 感叹号与T之间是两个空格。#include <iostream>using namespace std;int main(){ int T,K; int n1,b,t,n2; cin>>T>>K; for(int i=0;原创 2017-12-02 22:34:40 · 515 阅读 · 0 评论 -
PAT乙级1052 卖个萌
第二个测试点未过,有段错误#include <iostream>#include <vector>#include <string>using namespace std;int get1(string a,vector<string> &vec){ string temp=""; for(int i=0;i<a.length();i++){ if(a[i]!原创 2017-11-23 15:15:19 · 743 阅读 · 0 评论 -
PAT乙级1041 考试座位号
#include <iostream>#include <string>using namespace std;struct Node{ string num; int tryNum; int testNum;};int main(){ int N,M,search[1000]; Node stu[1000]; cin>>N; for(原创 2017-11-27 16:43:30 · 337 阅读 · 0 评论 -
PAT乙级1042 字符统计
用map结构会方便很多#include <iostream>#include <string>#include <map>using namespace std;int main(){ map<char,int> voca; char c; string str; int max=0; getline(cin,str); for(int i=0;原创 2017-11-27 16:24:29 · 308 阅读 · 0 评论 -
PAT乙级1043 输出PATest
#include <iostream>#include <string>#include <vector>using namespace std;int main(){ string str; int vP=0,vA=0,vT=0,ve=0,vs=0,vt=0; cin>>str; for(int i=0;i<str.length();i++){原创 2017-11-27 15:53:44 · 452 阅读 · 0 评论 -
PAT乙级1045 快速排序
这里用到的思想主要是对数组副本进行排序,然后与原数组进行对比,同样位置相同则表明有可能是主元,如果大于等于前面的每一个数(用等于是因为包括自身),则一定是主元#include <iostream>#include <algorithm>using namespace std;int main(){ int N,max=0,numPrimary=0; long int num[10原创 2017-11-27 10:04:23 · 537 阅读 · 0 评论 -
PAT乙级1047 编程赛团体
不用在意队员编号,只需记录队号和成绩,用map结构#include <iostream>#include <string>#include <map>using namespace std;int main(){ int N,score,maxScore=0; string teamNum,team,maxTeam; map<string,int> teamScore;原创 2017-11-25 22:26:45 · 347 阅读 · 0 评论 -
PAT乙级1048 数字加密
#include <iostream>#include <string>#include <vector>using namespace std;int reverse(string s,int t[]){ for(int i=0;i<s.length();i++){ t[i]=s[s.length()-i-1]-'0'; } return 0;}i原创 2017-11-25 15:26:45 · 374 阅读 · 0 评论 -
PAT乙级1049 数列的片段和
PAT上好多题都是用单精度不可以通过,双精度就没问题,以后就用双精度吧。#include <iostream>using namespace std;int main(){ int N,s; double num,sum=0; cin>>N; if(N%2==0){ s=N/2; }else{ s=N/2+1; }原创 2017-11-24 22:15:00 · 342 阅读 · 0 评论 -
PAT乙级1075
这道题可以分为两步,第一步是写出链表的正确顺序,第二部对内部数据进行分类。 第一步:网上有用大数组映射完成的,但假如无法映射我这里用map结构 第二部:将链表分为三部分的时候需要条件判断下个地址是否为NULL跳出循环。#include <iostream>#include <map>#include <vector>using namespace std;struct Node{原创 2017-12-04 16:08:48 · 585 阅读 · 0 评论 -
PAT乙级 1072 开学寄语
这个题要注意输出格式,物品编号为整数,但输出的时候要4位,不足位前位补0;不然第三个测试点过不了#include <iostream>#include <set>#include <string>#include <vector>using namespace std;struct Node{ string name; int numSigle; vector<in原创 2017-12-03 22:00:10 · 441 阅读 · 0 评论 -
PAT乙级1056 组合数的和
从所给数里面组合两位数,可以看作每一个数乘10顺序加其他的数。 如果有N个数,对某个数num来说,自身需要(N-1)次乘10与其他数相加。 因为其他还有(N-1)个数,因此其自身num做为个位数需要被加(N-1)次。 综上,每一个数做为(num*10+num)被累加(N-1)次。#include <iostream>using namespace std;int main(){ i原创 2017-11-21 11:20:04 · 321 阅读 · 0 评论 -
PAT乙级1057 数零壹
#include <iostream>#include <vector>#include <string>using namespace std;int main(){ string str; vector<int> sequenceNum; int dSum=0,num,num0=0,num1=0; getline(cin,str); for(int原创 2017-11-21 11:00:59 · 409 阅读 · 0 评论 -
PAT 甲级1012. The Best Rank (25)
这道题的坑点在于需要注意输出的并列排名,比如90、60、60、50的对应排名应该是1、2、2、4,很容易搞成1、2、3、4千万注意这一点。#include <iostream>#include <algorithm>#include <map>#include <vector>#include <string>using namespace std;struct student{原创 2017-05-13 22:47:09 · 311 阅读 · 0 评论 -
PAT甲级1009
pat甲级1009原创 2017-03-07 16:53:41 · 470 阅读 · 0 评论 -
PAT甲级1004
pat甲级原创 2017-03-09 20:23:12 · 476 阅读 · 0 评论 -
PAT乙级1025
PAT乙级1025原创 2017-02-14 11:53:45 · 627 阅读 · 0 评论 -
PAT甲级1003
#include <iostream>#include <climits>using namespace std;const int MAX=501;原创 2017-02-26 16:33:46 · 466 阅读 · 0 评论 -
PAT 甲级1007
#include <stdio.h>#include <stdlib.h>int main() { int k; scanf("%d",&k); int num[k]; int i,sum=0,max=-1,start=0,end=k-1,temp=0; for(i=0;i<k;i++){ scanf("%d",&num[i]);原创 2016-11-20 17:17:44 · 616 阅读 · 0 评论 -
PAT甲级1095
#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAXTITL 10struct input{ char car_num[MAXTITL]; char time[MAXTITL]; char status[MAXTITL]; int time_num;}; struct car原创 2016-11-20 13:41:43 · 510 阅读 · 0 评论 -
PAT甲级1002
pat 甲级1002原创 2016-11-20 13:36:32 · 673 阅读 · 0 评论 -
PAT甲级1006
#include <stdio.h>#include <stdlib.h>#define MAXTITL 16struct student{ char stu_num[MAXTITL]; char in_time[MAXTITL]; char out_time[MAXTITL]; int sign_in; int sign_out; };int原创 2016-11-16 09:36:10 · 501 阅读 · 0 评论 -
PAT乙级1065
我在这里为了查询方便用到了map, 看到其他同学有用数组来映射一个人有没有对象的,更快捷#include <iostream>#include <map>#include <set>#include <algorithm>原创 2017-11-18 16:31:19 · 276 阅读 · 0 评论 -
PAT乙级1064
这里用set来存储朋友数,不担心重复,也不用排序。#include <iostream>#include <set>#include <string>using namespace std;int main(){ int N,sum; string num; set<int> friendNum; cin>>N; for(int i=0;i<N;i++)原创 2017-11-18 16:51:52 · 380 阅读 · 0 评论 -
PAT乙级1058 选择题
1、似乎PAT所有的题都可以单次输出(一边输入一边输出)或者整体输出(全部输入完成后输出)。一般来说单次输出所需要的数据结构简单一些,但整体输出会让自己的程序看起来简单明晰,各有优点。本题用单次输出。 2、这道题独特的一个点救赎输入里面有“(”括弧这一个字符型数据,看到http://blog.csdn.net/liuchuo/article/details/52510582 柳婼的答案里将字符和回原创 2017-11-21 09:51:57 · 543 阅读 · 0 评论 -
PAT乙级 C语言竞赛
#include <iostream>#include <vector>#include <math.h>#include <set>using namespace std;bool primeNumber(int a){ int i,k; k=(int)sqrt(a); for(i=2;i<=k;i++){ if(a%i==0){原创 2017-11-20 11:34:45 · 444 阅读 · 0 评论 -
PAT乙级1036 跟奥巴马一起学编程
#include <iostream>using namespace std;int main(){ float N; int m; char c; cin>>N; cin>>c; m=(N/2+0.5); for(int i=0;i<m;i++){ for(int j=0;j<N;j++){ if(i=原创 2017-11-29 10:55:06 · 331 阅读 · 0 评论 -
PAT乙级1037 在霍格沃茨找零钱
#include <iostream>#include <math.h>using namespace std;int main(){ int Galleon1,Sickle1,Knut1,Galleon2,Sickle2,Knut2,Galleon3,Sickle3,Knut3; int P=0,A=0,ans; scanf("%d.%d.%d",&Galleon1,原创 2017-11-29 10:36:48 · 336 阅读 · 0 评论 -
PAT乙级1038 统计同成绩学生
#include <iostream>#include <map>#include <vector>using namespace std;int main(){ int N,K,num; vector<int> find; map<int,int> stu_score; cin>>N; for(int i=0;i<N;i++){ cin原创 2017-11-29 10:10:58 · 320 阅读 · 0 评论 -
PAT乙级1039 到底买不买
这里用了map计数查找; 想到一种办法先对输入进行排序计数,这样后边遍历查找的时候就只需要一遍。#include <iostream>#include <string>#include <map>using namespace std;int main(){ int count_b=0; string give,want; map<char,int> give_map原创 2017-11-29 10:00:29 · 292 阅读 · 0 评论