PAT-2019年秋季考试-甲级
7-1 Forever (20 分)
#include <bits/stdc++.h>
using namespace std;
int N,K,m,number[10];
multimap<int,int> mp;
int sum_digit(int num) {
int sum=0;
while(num/10) {
sum+=num%10;
num/=10;
}
sum+=num;
return sum;
}
int gcd(int a, int b) {
if(a%b==0) {
return b;
} else return gcd(b,a%b);
}
bool isprime(int num) {
if(num<=2) return false;
int temp=sqrt(num);
for(int i=2;i<=temp;++i) {
if(!(num%temp)) return false;
}
return true;
}
void dfs(int index, int sum) {
if(index==0) {
if(sum==0) {
int A=0;
for(int i=K-1;i>=1;--i) {
A=A*10+number[i];
}
A=(A*10+9);
int n=sum_digit(A+1);
int gcdnum=gcd(n,m);
if(isprime(gcdnum)) {
mp.insert(make_pair(n,A));
}
}
return;
}
if(index==K-1) {
for(int i=1;i<=9;++i) {
if(sum-i>=0) {
number[index]=i;
dfs(index-1,sum-i);
} else return;
}
return;
}
for(int i=0;i<=9;++i) {
if(sum-i>=0) {
number[index]=i;
dfs(index-1,sum-i);
} else return;
}
return;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
//freopen("in.txt","r",stdin);
cin>>N;
for(int i=1;i<=N;++i) {
mp.clear();
cin>>K>>m;
dfs(K-1,m-9);
cout<<"Case "<<i<<endl;
if(mp.size()==0) {
cout<<"No Solution"<<endl;
} else {
for(auto it=mp.begin();it!=mp.end();it++) {
cout<<it->first<<" "<<it->second<<endl;
}
}
}
return 0;
}
7-2 Merging Linked Lists (25 分)
#include <bits/stdc++.h>
using namespace std;
struct node {
int add,data,next;
};
unordered_map<int,node> mp;
vector<node> a,b,c;
void merge(vector<node> l1, vector<node> l2) {
int lena=l1.size(),lenb=l2.size(),index=0,indexa=0,indexb=0;
while(indexa<lena||indexb<lenb) {
if(indexa<lena) {
c.push_back(l1[indexa]);
indexa++;
}
if(indexa<lena) {
c.push_back(l1[indexa]);
indexa++;
}
if(indexb<lenb) {
c.push_back(l2[lenb-1-indexb]);
indexb++;
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int addl1,addl2,n;
cin>>addl1>>addl2>>n;
int add,data,next;
node temp;
for(int i=0; i<n; ++i) {
cin>>add>>data>>next;
temp.add=add;
temp.data=data;
temp.next=next;
mp.insert(make_pair(add,temp));
}
add=addl1;
while(add!=-1) {
temp=mp.find(add)->second;
a.push_back(temp);
add=temp.next;
}
add=addl2;
while(add!=-1) {
temp=mp.find(add)->second;
b.push_back(temp);
add=temp.next;
}
int lena=a.size(),lenb=b.size();
if(lena>lenb) merge(a,b);
else merge(b,a);
int lenc=c.size();
for(int i=0; i<lenc-1; ++i) printf("%05d %d %05d\n",c[i].add,c[i].data,c[i+1].add);
printf("%05d %d -1\n",c[lenc-1].add,c[lenc-1].data);
return 0;
}
7-3 Postfix Expression (25 分)
#include <bits/stdc++.h>
using namespace std;
struct node {
string data;
int pre,l,r;
};
node ans[25];
void dfs(int root) {
cout<<"(";
if(ans[root].l!=-1&&ans[root].r!=-1) {
dfs(ans[root].l);
dfs(ans[root].r);
cout<<ans[root].data;
} else if(ans[root].l==-1&&ans[root].r==-1) {
cout<<ans[root].data;
} else if(ans[root].l==-1&&ans[root].r!=-1) {
cout<<ans[root].data;
dfs(ans[root].r);
}
cout<<")";
return;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
//freopen("in.txt","r",stdin);
int N;
cin>>N;
for(int i=1;i<=N;++i) {
cin>>ans[i].data>>ans[i].l>>ans[i].r;
ans[i].pre=i;
}
for(int i=1;i<=N;++i) {
if(ans[i].l!=-1) ans[ans[i].l].pre=i;
if(ans[i].r!=-1) ans[ans[i].r].pre=i;
}
int root;
for(int i=1;i<=N;++i) {
if(ans[i].pre==i) {
root=i;
break;
}
}
dfs(root);
return 0;
}
7-4 Dijkstra Sequence (30 分)
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e3+5;
const int maxm = 1e5+5;
int g[maxn][maxn],ans[maxn],dis[maxn];
bool vis[maxn];
bool dij(int s, int n) {
fill(dis,dis+maxn,INT_MAX);
dis[s]=0;
fill(vis,vis+maxn,false);
for(int i=1;i<=n;++i) {
int v=-1,temp=INT_MAX;
for(int u=1;u<=n;++u) {
if(dis[u]<temp&&vis[u]==false) {
temp=dis[u];
v=u;
}
}
if(v==-1) return false;
if(dis[ans[i]]!=dis[v]||vis[ans[i]]==true) return false;
v=ans[i];
vis[v]=true;
for(int u=1;u<=n;++u) {
if((g[v][u]!=INT_MAX)&&(vis[u]==false)&&(dis[v]+g[v][u]<dis[u])) {
dis[u]=dis[v]+g[v][u];
}
}
}
return true;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
//freopen("in.txt","r",stdin);
int nv,ne,k;
cin>>nv>>ne;
int u,v,w;
fill(g[0],g[0]+maxn*maxn,INT_MAX);
for(int i=1;i<=ne;++i) {
cin>>u>>v>>w;
g[u][v]=g[v][u]=w;
}
cin>>k;
while(k--) {
for(int i=1;i<=nv;++i) {
cin>>ans[i];
}
if(dij(ans[1],nv)==true) {
cout<<"Yes"<<endl;
} else {
cout<<"No"<<endl;
}
}
return 0;
}
PAT-2019年秋季考试-甲级的更多相关文章
- PAT(甲级)2019年秋季考试
第一题用搜索,超时了,待补 更新第一题思路 dfs + 剪枝,首先确定 n的最后一位数字肯定是9,为什么呢,因为 任意两个相邻的数肯定互为质数(gcd=1),所以 n 的末尾肯定是9,这样n+1产生的 ...
- PAT(甲级)2017年秋季考试
PAT(甲级)2017年秋季考试 D题红黑树待补21/30 大佬的代码,看着想哭,这才是艺术啊 A Cut Integer 模拟题 #include<bits/stdc++.h> usin ...
- 【LOJ】#3030. 「JOISC 2019 Day1」考试
LOJ#3030. 「JOISC 2019 Day1」考试 看起来求一个奇怪图形(两条和坐标轴平行的线被切掉了一个角)内包括的点个数 too naive! 首先熟练的转化求不被这个图形包含的个数 -- ...
- PAT(甲级)2019年春季考试
7-1 Sexy Primes 判断素数 一个点没过17/20分 错因:输出i-6写成了输出i,当时写的很乱,可以参考其他人的写法 #include<bits/stdc++.h> usin ...
- PAT(乙级)2020年秋季考试
比赛链接:https://pintia.cn/market/item/1302816969611366400 7-1 多二了一点 (15分) 题解 模拟. 代码 #include <bits/s ...
- PAT 2019 秋
考试的还行.不过略微有点遗憾,但是没想到第一题会直接上排序和dfs,感觉这次的题目难度好像是倒着的一样.哈哈哈哈. 第一题实在是搞崩心态,这道题给我的感觉是,可以做,但事实上总是差点啥. 第二题,第三 ...
- 2019.3.28&2019.3.30考试
2019.3.28 : 肥肠爆芡,因为这场考试的题太屑了,所以我咕咕了 Upd on 2019.3.30 压进来一篇(因为都没啥意义) 2019.3.30 : 全机房读错题+没有大样例=T2全体爆炸 ...
- 2019.3.18考试&2019.3.19考试&2019.3.21考试
2019.3.18 C O D E T1 树上直接贪心,环上for一遍贪心 哇说的简单,码了将近一下午终于码出来了 感觉自己码力/写题策略太糟糕了,先是搞了一个细节太多的写法最后不得不弃疗了,然后第二 ...
- OCM 12c | OCM 12c Update | OCM 11g (Retiring Dec 31, 2019) | OCM 11g考试延期至2020.04.30
OCM 全球考试安排时间表 View A Worldwide OCM Schedule Oracle Database 12c Certified Master Exam (OCM) OCM 12c ...
随机推荐
- SasS 设计原则十二因素
Heroku 是业内知名的云应用平台,从对外提供服务以来,他们已经有上百万应用的托管和运营经验.其创始人 Adam Wiggins 根据这些经验,发布了一个“十二要素应用宣言(The Twelve-F ...
- 合并JSON对象的正确方式
一. 前言 “JSON对象合并”是前端开发和 NodeJS 环境开发中非常常见的操作.开发者通常会通过循环遍历或一些库封装的方法或 JavaScript ECMAScript 2015 定义的 Obj ...
- 非旋treap (fhq treap) 指针版
传送门 看了一圈,好像真的没什么用指针的呢.. 明明觉得指针很好看(什么??你说RE???听不见听不见) 其实我觉得用数组的话不RE直接WA调起来不是更困难嘛,毕竟通过gdb还可以知道哪里RE,WA就 ...
- 随(rand):原根,循环矩阵,dp
20分特判,一个puts("1")一个快速幂,不讲. 50%算法: 上次就讲了,可是应该还是有像 xuefen某 或 Dybal某 一样没听的. 用a×inv(b)%mod来表示分 ...
- NOIP模拟18 T2
不知道为什么很多人拒绝这题打搜索...其实搜索在充分剪枝后时间是非常优秀的,不管数据怎样基本都可跑出 首先一个显然结论:对于某种状态,他抓到的小精灵一定是一个连续的区间. 因此我们可以枚举这个区间的左 ...
- 一个帮助理清思路的神奇工具--debug
今天在回顾复习之前的知识的时候,对嵌套循环犯了迷糊,于是我使用了debug这个方法,不仅让我弄清楚嵌套循环输出结果是如何得来,也让我明白了具体流程. 在这里,IDE我使用的是PyCharm,自然用它自 ...
- 最新开源跳板机(堡垒机)系统 Jumpserver介绍
Jumpserver 是全球首款完全开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 的专业运维审计系统. Jumpserver 使用 Python / Django 进行开发,遵 ...
- 1011课堂小结 day21
组合 什么是组合 组合指的是一个对象中的属性,是另一个对象. 为什么要使用组合 为了减少代码冗余 封装 什么是封装 封装指的是把一堆属性(特征与技能)封装到一个对象中 为什么要封装 封装的目的为了方便 ...
- html5自动横屏的方法
html5自动横屏的方法<pre>var evt = "onorientationchange" in window ? "orientationchange ...
- spark安装配置
一.下载解压 二.配置 (假设已经配置了Java.Hadoop) 1.环境变量 2.spark配置 进入spark安装目录,复制文件 编辑spark-env.sh文件,在文件中添加如下信息(括号中路径 ...