![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PAT
几多可爱
这个作者很懒,什么都没留下…
展开
-
PAT甲级 1042 Shuffling Machine (20分)
使用vector容器易于数组之间的赋值代码如下:#include <iostream>#include <vector>using namespace std;int main(){ int n; scanf("%d",&n); vector<int> start(55),end(55),b(55); for (int i=1;i<55;i++){ scanf("%d",&b[i]); start[i]=i; }原创 2020-06-10 18:31:31 · 107 阅读 · 0 评论 -
PAT甲级 1044 Shopping in Mars (25分)(二分法)
本题思路:用sum数组计算第一颗钻石到第i颗钻石价值的总和,然后从序列i开始,对i和n做二分运算,每次循环得出一个数j,i到j之间的钻石价值最接近m(如果不能等于m,则大于m优先,如果没有大于m的,小于m优先)代码如下:#include <iostream>#include <vector>using namespace std;int n,m,sum[100001],j,tans;void fun(int i){ int l=i,r=n; while(l&原创 2020-06-08 13:22:51 · 141 阅读 · 0 评论 -
PAT甲级 1046 Shortest Distance (20分)
如果直接用二维数组来存储距离,会导致内存超限,所以不能用二维数组存储。采用g数组存储点1到i点的下一点i+1的距离代码如下:#include <iostream>#include <algorithm>using namespace std;int main(){ int n,t,sum=0,m,l,r; scanf("%d",&n); int g[n+1]; g[0]=0; //默认1到自己的距离为0 for (int i=1;i<=n;i+原创 2020-06-08 11:36:32 · 100 阅读 · 0 评论 -
PAT甲级 1047 Student List for Course (25分)
注意:存储学生姓名如果直接选择string会超时,所以需要用字符数组存储学生姓名#include <iostream>#include <algorithm>#include <vector>#include <cstring> using namespace std;char name[40000][6];bool cmp(int a,int b){ return strcmp(name[a],name[b])<0;}int m原创 2020-06-06 21:35:35 · 108 阅读 · 0 评论 -
PAT甲级 1049 Counting Ones (30分) 数论
给出一个数n,分别计算n的每一位置上为1的范围从1~n内的数的个数有多少,相加之后就是最终结果代码如下:#include <iostream>using namespace std;int main(){ int n; scanf("%d",&n); int a=1,left=0,right=0,now,ans=0; while(n/a){ left=n/(a*10),now=n/a%10,right=n%a; if (now==0){ ans+=原创 2020-06-06 20:55:01 · 147 阅读 · 0 评论 -
PAT甲级 1058 A+B in Hogwarts (20分)
本题坑点:1.计算b[i]的值时可能会超出int的范围,所以b[i]的数据类型为long long,同时也需要将a数组的的数据类型也设置为long long代码如下#include <iostream>using namespace std;int main(){ long long a[3]={493,29,1}; int c,d,e; long long b[2]; for (int i=0;i<2;i++){ scanf("%d.%d.%d",&原创 2020-06-05 11:11:18 · 93 阅读 · 0 评论 -
PAT甲级 1059 Prime Factors (25分)
本题坑点:1.输入的数可能是1,1的素数分解为"1=1"2.素数表的建立不宜太大,太大可能会导致运行超时,建10000以内的素数表已经能满足本题需求代码如下:#include <iostream>#include <vector>#include <cmath>#include <map>using namespace std;vector<int> v;map<int,int> m;int ss(int原创 2020-06-04 22:30:50 · 149 阅读 · 0 评论 -
PAT甲级 1060 Are They Equal (25分)
本题坑点:1.输入的数字可能是不常规的,比如0.000和0012等,要将两者转换为常规格式即0和12。2.要求输出的有效数字位为n,但是可能给出的需要进行科学处理的数据处理得出的结果不足n位,对于不足的位需要用0来填补3.10^0和10^1需要输出代码如下:#include <iostream>#include <cctype>#include <algorithm>using namespace std;int main(){ int n原创 2020-06-04 21:12:23 · 96 阅读 · 0 评论 -
PAT甲级 1086 Tree Traversals Again (25分)
题目大意:通过栈来构建二叉树解题思路:每一个push之后的数字构成的序列是树的前序遍历序列。如果将这些数字将构成一个栈,每次从栈中pop出的数组成树的中序遍历序列。所以这道题就是根据前序和中序构建后序序列并输出#include <iostream>#include <stack>#include <vector>using namespace std;vector<int> v1,v2,ans;int n;void postorder(i原创 2020-05-31 09:54:22 · 215 阅读 · 0 评论 -
PAT甲级 Rational Sum (20分)
题目大意:求出所给的n个分数的和#include <iostream>using namespace std;long long gys(long long a,long long b){ if (a==0){ return b; } else{ return gys(b%a,a); }}int main(){ int n; scanf("%d",&n); long long a,b,suma,sumb; for (int i=0;i<n;i+原创 2020-05-31 09:46:25 · 127 阅读 · 0 评论