PAT 乙级练习 题解合集
自己写的PAT题解。时常在线,可以追问我。
SQ_ZYX
A definite boy!
展开
-
PAT (Basic Level) Practice 1022 D进制的A+B
典型的进制转换题,需要用到辗转相除。 辗转相除:一种用于十进制向其他进制转换的算法。原理:每次求余运算都能算出该十进制数转换成目标进制数的尚未确定的"最后一位"。 例子:如将38转化为4进制。2*4^2+4^1+2=38=212(4进制) 对其取4的余数(2*4^2+4^1都是 4的倍数)=2。得到倒数第一位。212(4进制)-2=210(4进制)。 此时令(38-2)%4=9=(212-2)/4(4进制)=21(4进制)=2*4^1+1。 #include <cstdio> #原创 2021-07-22 13:44:48 · 92 阅读 · 0 评论 -
PAT (Basic Level) Practice 1019 数字黑洞
用了小根堆和大根堆。 #include <cstdio> #include <queue> #include <cmath> using namespace std; void vailable(int t){ priority_queue<int,vector<int>,greater<int> >q; priority_queue<int,vector<int>,less<int> >原创 2021-07-17 17:43:10 · 101 阅读 · 0 评论 -
PAT (Basic Level) Practice 1018 锤子剪刀布
利用地图将BCJ映射成123,同时将123映射成BCJ。解除int数组的下标不能为字母的限制。当然也可以用结构体来操作,会简单很多。 #include <cstdio> #include <map> using namespace std; const int maxn=3210; map<char,short > mapStudent;//将BCJ变成123,然后用a,b数组分别存储两个选手赢时的出手类型。 //如a[1]=2表明1号选手出布的时候赢了两次。 ma原创 2021-07-17 11:32:11 · 87 阅读 · 0 评论 -
PAT (Basic Level) Practice1017 A除以B
手动模拟除法运算就好了。可以自己先拿纸算一下。 #include <cstdio> using namespace std; const int maxn=2021; int a[maxn],b[maxn];int len = 0; int d,remain; void divid(int t,int cache){ a[t]+=cache*10;//用cache处理上一位(或者几位)被除后的余数。乘10后加到本位上。 b[t]=a[t]/d; if(t==len-1...原创 2021-07-16 22:34:35 · 112 阅读 · 0 评论