PAT(甲级)2019年春季考试
7-1 Sexy Primes 判断素数 一个点没过17/20分
错因:输出i-6写成了输出i,当时写的很乱,可以参考其他人的写法
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e8;
typedef long long ll;
int n;
bool isprime(ll x){
if(x == 0 || x==1 || x==2) return false;
for(ll i=2;i<=sqrt(x);i++){
if(x%i==0) return false;
}
return true;
}
int main(){
scanf("%lld",&n);
if(isprime(n)){
if(n>=6 && isprime(n-6)){
puts("Yes");
printf("%lld",n-6);
}else if(isprime(n+6)){
puts("Yes");
printf("%lld",n+6);
}else{
puts("No");
for(ll i=n+1;i<=maxn;i++){
if(i-6>=0){
if((i-6)>=0 && isprime(i) && isprime(i-6)){
printf("%lld",i);
break;
}
}else{
if(isprime(i) && isprime(i+6)){
printf("%lld",i);
break;
}
}
}
}
}else{
puts("No");
for(ll i=n+1;i<=maxn;i++){
if(i-6>=0){
if((i-6)>=0 && isprime(i) && isprime(i-6)){
printf("%lld",i);
break;
}
}else{
if(isprime(i) && isprime(i+6)){
printf("%lld",i);
break;
}
}
}
}
return 0;
}
修改后的代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e8+10;
typedef long long ll;
int n;
bool isprime(ll x){
if(x == 0 || x==1 || x==2) return false;
for(ll i=2;i<=sqrt(x);i++){
if(x%i==0) return false;
}
return true;
}
int main(){
scanf("%lld",&n);
printf("i = %d\n",ac);
if(isprime(n)){
if(n>=6 && isprime(n-6)){
puts("Yes");
printf("%lld",n-6);
}else if(isprime(n+6)){
puts("Yes");
printf("%lld",n+6);
}else{
puts("No");
for(ll i=n+1;i<=maxn;i++){
if(i-6>=0){
if((i-6)>=0 && isprime(i) && isprime(i-6)){
printf("%lld",i);
break;
}
}else{
if(isprime(i) && isprime(i+6)){
printf("%lld",i);
break;
}
}
}
}
}else{
puts("No");
for(ll i=n+1;i<=maxn;i++){
if(i-6>=0){
if((i-6)>=0 && isprime(i) && isprime(i-6)){
printf("%lld",i - 6);
break;
}else if(isprime(i) && isprime(i+6)){
printf("%lld",i);
break;
}
}else{
if(isprime(i) && isprime(i+6)){
printf("%lld",i);
break;
}
}
}
}
return 0;
}
7-2 Anniversary 集合、查找排序 25分
#include<bits/stdc++.h>
using namespace std;
set<string> se1;
set<string> se2;
int n,m;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
string id;
cin>>id;
se1.insert(id);
}
int ans = 0;
string guestold = "99999999";
string assold = "99999999";
string guest;
string ass;
cin>>m;
for(int i=1;i<=m;i++){
string id;
cin>>id;
se2.insert(id);
string temp;
for(int j=6;j<=13;j++) temp.push_back(id[j]);
if(se1.find(id) != se1.end()){
ans++;
if(assold > temp) {
assold = temp;
ass = id;
}
}
if(guestold > temp) {
guestold = temp;
guest = id;
}
}
cout<<ans<<endl;
if(ans != 0){
if(n !=0){
cout<<ass<<endl;
}
}else{
if(m!=0){
cout<<guest<<endl;
}
}
return 0;
}
7-3 Telefraud Detection 图论 15/25分
更新错误原因:没有完全搞清题意,total duration,表示两人之间累计的通话时间
下面的代码只算了最后1次时间(覆盖)
修改后,可以用并查集做,不过感觉没必要,统计入度出度+暴力判断集合也不会超时的
参考链接
#include<bits/stdc++.h>
using namespace std;
/*
邻接矩阵
点:出度 和他的边相关的入度
*/
const int maxn = 1010;
int k,n,m;
int g[maxn][maxn];
vector<int> sss;
int vis[maxn];
vector<int> temp;
set<int> se;
void print(){
if(temp.size()==0) return;
cout<<temp[0];
for(int i=1;i<temp.size();i++){
cout<<" "<<temp[i];
}
cout<<endl;
}
int main(){
cin>>k>>n>>m;
for(int i=1;i<=m;i++){
int u,v,w;
cin>>u>>v>>w;
g[u][v] = w;
}
for(int i=1;i<=n;i++){
int call = 0;
int back = 0;
for(int j=1;j<=n;j++){
if(g[i][j]!=0 && g[i][j] <= 5){
call++;
if(g[j][i] != 0) back++;
}
}
if(call > k && back*5 <= call){
sss.push_back(i);
se.insert(i);
}
}
if(sss.size() == 0){
cout<<"None"<<endl;
return 0;
}
sort(sss.begin(),sss.end());
for(int i=0;i<sss.size();i++){
int x = sss[i];
temp.clear();
if(!vis[x]){
vis[x] = 1;
temp.push_back(x);
for(int j=i+1;j<sss.size();j++){
//判断第sss[i]能否可以用
bool can = true;
for(int k=0;k<temp.size();k++){
if(g[sss[j]][temp[k]] == 0){
can = false;
break;
}
}
if(can == true){
vis[sss[j]] = 1;
temp.push_back(sss[j]);
}
}
print();
}
}
return 0;
}
7-4 Structure of a Binary Tree 二叉树中序后序建树,dfs深搜30分
#include<bits/stdc++.h>
using namespace std;
int n,m;
const int maxn = 1100;
int in[maxn];
int post[maxn];
struct node{
int v;
node* l;
node* r;
};
int level[maxn];
int l[maxn];
int r[maxn];
int sib[maxn];
int par[maxn];
bool full = true;
void dfs(node *root,int depth){
if(root == NULL) return;
int x = root->v;
level[x] = depth;
if(root->l != NULL){
par[root->l->v] = x;
l[x] = root->l->v;
dfs(root->l,depth+1);
}
if(root->r != NULL){
par[root->r->v] = x;
r[x] = root->r->v;
dfs(root->r,depth+1);
}
if(root->l != NULL && root->r != NULL){
sib[root->l->v] = root->r->v;
sib[root->r->v] = root->l->v;
}
if((root->l == NULL && root->r !=NULL) || (root->r == NULL && root->l !=NULL) ){
full = false;
}
}
node* build(int il,int ir,int pl,int pr){
if(il > ir) return NULL;
int rootv = post[pr];
int pos = il;
while(pos <= ir && in[pos] != rootv) pos++;
node *root = new node;
root->v = rootv;
root->l = build(il,pos-1,pl,pr-(ir-pos)-1);
// pr-(ir-pos)+1
// root->r = build(pos+1,ir,pl+(pos-il)+1,pr);
root->r = build(pos+1,ir,pr-(ir-pos)+1,pr-1);
return root;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>post[i];
for(int j=1;j<=n;j++) cin>>in[j];
node* Root = build(1,n,1,n);
dfs(Root,1);
cin>>m;
getchar();
while(m--){
string stat;
getline(cin, stat);
if(stat.find("root") != string::npos){
int root = 0;
for(int i=0;i<stat.length();i++){
if(stat[i] > '9' || stat[i] < '0') break;
root = root*10 + (stat[i] - '0');
}
if(root == Root->v){
puts("Yes");
}else{
puts("No");
}
}else if(stat.find("siblings") != string::npos){
int parent = 0;
int pos = 0;
for(int i=0;i<stat.length();i++){
if(stat[i] > '9' || stat[i] < '0') break;
parent = parent*10 + (stat[i] - '0');
pos = i;
}
int child = 0;
for(int i = pos+1;i<stat.length();i++){
if(stat[i] > '9' || stat[i] < '0') continue;
child = child*10 + (stat[i] - '0');
}
if(sib[parent] == child && sib[child] == parent){
puts("Yes");
}else{
puts("No");
}
}else if(stat.find("parent") != string::npos){
int parent = 0;
int pos = 0;
for(int i=0;i<stat.length();i++){
if(stat[i] > '9' || stat[i] < '0') break;
parent = parent*10 + (stat[i] - '0');
pos = i;
}
int child = 0;
for(int i = pos+1;i<stat.length();i++){
if(stat[i] > '9' || stat[i] < '0') continue;
child = child*10 + (stat[i] - '0');
}
if(par[child] == parent){
puts("Yes");
}else{
puts("No");
}
}else if(stat.find("left") != string::npos){
int parent = 0;
int pos = 0;
for(int i=0;i<stat.length();i++){
if(stat[i] > '9' || stat[i] < '0') break;
parent = parent*10 + (stat[i] - '0');
pos = i;
}
int child = 0;
for(int i = pos+1;i<stat.length();i++){
if(stat[i] > '9' || stat[i] < '0') continue;
child = child*10 + (stat[i] - '0');
}
if(l[child] == parent){
puts("Yes");
}else{
puts("No");
}
}else if(stat.find("right") != string::npos){
int parent = 0;
int pos = 0;
for(int i=0;i<stat.length();i++){
if(stat[i] > '9' || stat[i] < '0') break;
parent = parent*10 + (stat[i] - '0');
pos = i;
}
int child = 0;
for(int i = pos+1;i<stat.length();i++){
if(stat[i] > '9' || stat[i] < '0') continue;
child = child*10 + (stat[i] - '0');
}
if(r[child] == parent){
puts("Yes");
}else{
puts("No");
}
}else if(stat.find("same") != string::npos){
int parent = 0;
int pos = 0;
for(int i=0;i<stat.length();i++){
if(stat[i] > '9' || stat[i] < '0') break;
parent = parent*10 + (stat[i] - '0');
pos = i;
}
int child = 0;
for(int i = pos+1;i<stat.length();i++){
if(stat[i] > '9' || stat[i] < '0') continue;
child = child*10 + (stat[i] - '0');
}
if(level[parent] == level[child]){
puts("Yes");
}else{
puts("No");
}
}else if(stat.find("full") != string::npos){
if(full) puts("Yes");
else puts("No");
}
}
return 0;
}
PAT(甲级)2019年春季考试的更多相关文章
- PAT甲级2019冬季考试题解
A Good In C纯模拟题,用string数组读入数据,注意单词数量的判断 #include<bits/stdc++.h> using namespace std; ; ][]; in ...
- PAT甲级满分攻略|记一次考试经历
一次考试经历 今天是"大雪",很冷. 来到隔壁的学校考试,记得上一次来河中医是两年前大一刚开学吧,那天晚上印象比较深刻,6个室友骑车到处闲逛.当时还不会Hello world. 很 ...
- PAT(甲级)2017年春季考试
PAT(甲级)2017年春季考试 A.Raffle for Weibo Followers #include<bits/stdc++.h> using namespace std; int ...
- 2019秋季PAT甲级_备考总结
2019 秋季 PAT 甲级 备考总结 在 2019/9/8 的 PAT 甲级考试中拿到了满分,考试题目的C++题解记录在这里,此处对备考过程和考试情况做一个总结.如果我的方法能帮助到碰巧点进来的有缘 ...
- PAT甲级考前整理(2019年3月备考)之三,持续更新中.....
PAT甲级考前整理一:https://www.cnblogs.com/jlyg/p/7525244.html,主要讲了131题的易错题及坑点 PAT甲级考前整理二:https://www.cnblog ...
- PAT甲级考前整理(2019年3月备考)之一
转载请注明出处:https://www.cnblogs.com/jlyg/p/7525244.html 终于在考前,刷完PAT甲级131道题目,不容易!!!每天沉迷在刷题之中而不能超脱,也是一种 ...
- 2019秋季PAT甲级_C++题解
2019 秋季 PAT (Advanced Level) C++题解 考试拿到了满分但受考场状态和知识水平所限可能方法不够简洁,此处保留记录,仍需多加学习.备考总结(笔记目录)在这里 7-1 Fore ...
- 2021.9.12周六PAT甲级考试复盘与总结
周六PAT甲级考试复盘与总结 先说结论:仍未步入"高手"行列:现在的学习节奏与方法是对的,有十万分的必要坚持下去. 题目 知识点 分数 T1 前缀和.二分 11 / 20 T2 排 ...
- pat甲级考试+pat1051+1056
同上一篇博客: 贪心题目我已经刷了将近30道了,由于那几天考驾照就没写,以后有空的时候补过来吧,都在codeblock里 pat的题也刷了点,acwing 的题也刷了点,基本都攒下了.以后也会慢慢补过 ...
随机推荐
- [考试反思]1106csp-s模拟测试103: 渺茫
7点之前上不了博客,用gedit写的.谅解一下. 看起来不是特别惨?但是被sdfz爆踩了...而且其实并不能说“不是特别惨”吧90分算个啥啊?还凑不出个T2的AC难易度评估错误,T2是最简单的没看出来 ...
- CSPS模拟 56
前十基本都A题了,只有$Dybala$.$Naito$和弱比$yxs$没有A题 $T1 Merchant$ 明明学过$nth element$但是由于不懂原理导致我用了个鬼畜的${U队}$来维护前$K ...
- 7.30 NOIP模拟10
T1.辣鸡 考试的时候竟然被我以“麻烦”弃掉了,赛后发现这题好水啊,直接sort一下寻找四周即可. T2.模板 考试时期望得分70,实际得分5 首先看到这种题基本就是线段树,我们以时间为下标,对每一个 ...
- Elasticsearch 技术分析(八):剖析 Elasticsearch 的索引原理
前言 创建索引的时候,我们通过Mapping 映射定义好索引的基本结构信息,接下来我们肯定需要往 ES 里面新增业务文档数据了,例如用户,日志等业务数据.新增的业务数据,我们根据 Mapping 来生 ...
- 手把手教你定制标准Spring Boot starter,真的很清晰
写在前面 我们每次构建一个 Spring 应用程序时,我们都不希望从头开始实现具有「横切关注点」的内容:相反,我们希望一次性实现这些功能,并根据需要将它们包含到任何我们要构建的应用程序中 横切关注点 ...
- 掌握git命令的正确使用姿势
前言 最近在团队内部发起了一个小的python项目(用tkinter实现一个小工具),但是发现大家对git的使用还不太熟悉,不知道怎么同步代码.解决冲突等等.因为我觉得对测试工程师来说,git应该是必 ...
- Kubernetes3-kubectl管理Kubernetes容器平台-1
一.简介 1.什么是kubectl kubectl前面其实已经用到了一些,它其实就是用于操作kubernetes集群的命令行接口,通过kubectl的各种命令实现各种功能 2.环境还是用上一偏文章 K ...
- Java自动化测试框架-12 - TestNG之xml文件详解篇 (详细教程)
1.简介 现在这篇,我们来学习TestNG.xml文件,前面我们已经知道,TestNG就是运行这个文件来执行测试用例的.通过本篇,你可以进一步了解到:这个文件是配置测试用例,测试套件.简单来说,利用这 ...
- NOIP 模拟22
这次考试真的是像教练说的真的挺难的,但是人家rank1还是100+, 但是咕咕蛊!
- 实现 call、apply、bind
实现 call.apply.bind 在之前一篇文章写了这三个参数的区别,但是其实面试更常考察如何实现.其实所有的原生函数的 polyfill 如何实现,只需要考虑 4 点即可: 基本功能 原型 th ...