• 大概写了30mins多点,后来有事情去了就溜了没打完
  • 勾股定理最后一个点WA了少了1分,错误数据是1e4大概暴力T了,不过没时间改了

7-1 自动编程 (5 分)

7-1 自动编程 (5 分)
输出语句是每个程序员首先要掌握的语句。Python 的输出语句很简单,只要写一个 print(X) 即可,其中 X 是需要输出的内容。

本题就请你写一个自动编程机,对任何一个要输出的整数 N,给出输出这个整数的 Python 语句。

输入格式:
输入给出一个不超过 10
​5
​​ 的正整数。

输出格式:
在一行中打印输出这个整数的 Python 语句,其中不包含任何空格。

输入样例:
520
输出样例:
print(520)

#include "bits/stdc++.h"
using namespace std;
int main(){int n;cin >> n;cout << "print(" << n << ")" << endl;return 0;
}

7-2 加油冲鸭 (10 分)

宝宝参加运动会的 N 米跑比赛。宝宝每秒钟跑 M 米,跑了 S 秒后,还剩多少米?如果剩下的距离比 N 的一半还远,你就对宝宝喊:“加油鸭!”如果剩下的距离不超过 N 的一半了,就喊:“冲鸭!”

微信图片_20210512172633.png

输入格式:
输入在一行中给出 3 个正整数,分别是 N(不超过 1000),是比赛的总长度;M(不超过 10),是宝宝每秒跑的距离;S(不超过 100),是宝宝跑的秒数。

题目保证宝宝跑完的距离小于 N。

输出格式:
在一行中输出“还剩X米!加油鸭!”或者是“还剩X米!冲鸭!”,其中 X 是宝宝剩下的距离。当然输出的是汉语拼音,即:hai sheng X mi! jia you ya! 或者 hai sheng X mi! chong ya!。

输入样例 1:
100 5 9
输出样例 1:
hai sheng 55 mi! jia you ya!
输入样例 2:
200 6 20
输出样例 2:
hai sheng 80 mi! chong ya!

#include "bits/stdc++.h"
using namespace std;
int main(){int n, m, s;cin >> n >> m >> s;int y = n-s*m;if (y > n / 2) {cout<<"hai sheng "<<y<<" mi! jia you ya!";} else {cout<<"hai sheng "<<y<<" mi! chong ya!";}return 0;
}

7-3 520的表白 (10 分)

“520”是信息时代的爱情节日,谐音“吾爱您”。既然是网络情人节,表白用的定情物也就是通过网络传输的,比如 520 朵玫瑰、520 颗巧克力、520 句“我爱拼题A”……

本题就请你做一个定制化的 520 表白程序,将客户想要表白的句子输出 520 遍。

输入格式:
输入在一行中给出客户想要定制的表白句,是由不超过 9 个数字组成的火星文。

输出格式:
将客户的表白输出 520 遍,每遍占一行。

输入样例:
5201314
输出样例(… 表示省略中间 517 遍):
5201314
5201314

5201314

#include "bits/stdc++.h"
using namespace std;
int main(){string s;cin >> s;for (int i = 1; i <= 520; i++) {cout << s << endl;}return 0;
}

7-4 奇葩楼层 (15 分)

7-4 奇葩楼层 (15 分)
几乎每个国家都有自己忌讳的数字,有的大楼在给楼层编号的时候,会刻意跳过含有不吉利数字的编号。比如中国人比较忌讳 4,有的大楼就没有第 4 层、第 14 层 等等,这样楼层的编号就会是 1、2、3、5、…… 即编号为 5 的楼层实际是第 4 层。那么在去掉了忌讳数字之后最高楼层编号为 n 的大楼,实际上有多少层呢?

输入格式:
输入在一行中给出 2 个整数,依次为大楼最高层的编号 n(1<n≤1000),和某国人民忌讳的数字 d(0≤d≤9)。题目保证 n 中不包含 d。注意楼层编号从 1 开始。

输出格式:
在一行中输出该大楼的实际楼层数。

输入样例:
50 4
输出样例:
36

#include<bits/stdc++.h>
using namespace std;
int main(){int n, d;  cin>>n>>d;int cnt = 0;for(int i = 1; i <= n; i++){string s = to_string(i);if(s.find('0'+d)!=string::npos){continue;}cnt++;}cout<<cnt<<"\n";return 0;
}

7-5 大勾股定理 (15 分)

7-5 大勾股定理 (15 分)
大勾股定理是勾股定理的推广:对任何正整数 n 存在 2n+1 个连续正整数,满足前 n+1 个数的平方和等于后 n 个数的平方和。例如对于 n=1 有 3
​2
​​ +4
​2
​​ =5
​2
​​ ;n=2 有 10
​2
​​ +11
​2
​​ +12
​2
​​ =13
​2
​​ +14
​2
​​ 等。给定 n,本题就请你找出对应的解。

输入格式:
输入在一行中给出正整数 n(≤10
​4
​​ )。

输出格式:
分两行输出满足大勾股定理的解,格式如下:

a[0]^2 + a[1]^2 + … + a[n]^2 =
a[n+1]^2 + … + a[2n]^2
其中解的数列 a[0] … a[2n] 按递增序输出。注意行首尾不得有多余空格。

输入样例:
3
输出样例:
21^2 + 22^2 + 23^2 + 24^2 =
25^2 + 26^2 + 27^2

#include "bits/stdc++.h"
using namespace std;
typedef long long LL;
const int maxn = 1e7 + 10;
LL f[maxn];
int main(){ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);int n;cin >> n;for(int i = 1; i <= maxn/2; i++){f[i] = f[i-1]+i*i;}for (int i = 1; i <= maxn/2; i++) {LL sum1 = f[i+n]-f[i-1], sum2 = f[(i+n+1+n-1)]-f[i+n];//for (int j = i; j <= i + n; j++) {//sum1 += j * j;//}//for (int j = i + n + 1; j <= i + n + 1 + n - 1; j++) {//  sum2 += j * j;//}if (sum1 == sum2) {for (int j = i; j <= i + n; j++) {if (j != i) cout << "+ ";cout << j << "^2 ";}cout << "=" << endl;for (int j = i + n + 1; j <= i + n + 1 + n - 1; j++) {if (j != i + n + 1) cout << " + ";cout << j << "^2";}break;}}return 0;
}

7-6 矩阵列平移 (20 分)

7-6 矩阵列平移 (20 分)
给定一个 n×n 的整数矩阵。对任一给定的正整数 k<n,我们将矩阵的偶数列的元素整体向下依次平移 1、……、k、1、……、k、…… 个位置,平移空出的位置用整数 x 补。你需要计算出结果矩阵的每一行元素的和。

输入格式:
输入第一行给出 3 个正整数:n(<100)、k(<n)、x(<100),分别如题面所述。

接下来 n 行,每行给出 n 个不超过 100 的正整数,为矩阵元素的值。数字间以空格分隔。

输出格式:
在一行中输出平移后第 1 到 n 行元素的和。数字间以 1 个空格分隔,行首尾不得有多余空格。

输入样例:
7 2 99
11 87 23 67 20 75 89
37 94 27 91 63 50 11
44 38 50 26 40 26 24
73 85 63 28 62 18 68
15 83 27 97 88 25 43
23 78 98 20 30 81 99
77 36 48 59 25 34 22
输出样例:
440 399 369 421 302 386 428
样例解读

需要平移的是第 2、4、6 列。给定 k=2,应该将这三列顺次整体向下平移 1、2、1 位(如果有更多列,就应该按照 1、2、1、2 …… 这个规律顺次向下平移),顶端的空位用 99 来填充。平移后的矩阵变成:

11 99 23 99 20 99 89
37 87 27 99 63 75 11
44 94 50 67 40 50 24
73 38 63 91 62 26 68
15 85 27 26 88 18 43
23 83 98 28 30 25 99
77 78 48 97 25 81 22

#include "bits/stdc++.h"
using namespace std;
int g[110][110], mv[110];
int main(){int n, k, x;cin >> n >> k >> x;for (int i = 1; i <= n; i++) {int cc = 1;for (int j = 1; j <= n; j++) {cin >> g[i][j];//sum[i] += g[i][j];if(j%2==1)mv[j] = 0;else if(j%2==0){mv[j] = cc;cc++;if(cc==k+1){cc = 1;}}}}for(int i = 1; i <= n; i++){int sm = 0;for(int j = 1; j <= n; j++){if(i<=mv[j])sm += x;else sm += g[i-mv[j]][j];}if(i!=1)cout<<" ";cout<<sm;}return 0;
}

7-7 约会大作战 (20 分)

7-7 约会大作战 (20 分)
某社团开展了一个“快闪”相亲活动,活动规则如下:

社团负责人将所有人分为两组,并收集了每个人对另外一组的所有人的好感度;
然后社团负责人会随机地在两组各抽取一个人,询问他们是否愿意一起去约会;
所有人对一开始的两次询问一定会拒绝;
从第三次询问开始,如果询问的人的好感度大于这个人之前的两个没能牵手的人,则接受,否则拒绝;
只有两个人同时接受,约会才成立。
约会成立后,后面的询问一律拒绝。
现在给出好感度和每次询问的两个人,请你帮忙计算一下最终有哪些人可以去约会了。

输入格式:
输入第一行是三个数字 N,M,Q (1 ≤ N,M ≤ 100, 1 ≤ Q ≤ 500), 表示分成的两组里,第一组有 N 个人,第二组有 M 个人,共有 Q 次询问。

接下来 N 行,每行 M 个数,第 i 行的第 j 个数表示第一组的第 i 个人对第二组的第 j 个人的好感度数值。数字的绝对值不超过 100。

再接下来的 M 行,每行 N 个数,第 i 行的第 j 个数表示第二组的第 i 个人对第一组的第 j 个人的好感度数值。数字的绝对值同样不超过 100。

最后有 Q 行,每行两个数字 x,y,表示主持人询问第一组的第 x 个人和第 y 个人去不去约会。

每一组内人的编号从 1 开始。

注意: 如果同一对人被询问两次,会被当成两对人处理。

输出格式:
输出若干行,每行两个数 a,b,表示第一组的第 a 个人和第二组的第 b 个人约会成功。顺序按照询问顺序的先后。如果没有一对能约会成功,则输出一行 PTA is my only love。

输入样例:
3 4 12
8 9 1 2
3 4 8 5
1 8 2 9
8 6 2
8 4 1
5 8 7
7 2 8
3 1
2 3
3 3
1 3
2 1
1 4
1 1
2 4
3 2
2 2
1 2
3 4
输出样例:
1 1
3 4

#include<bits/stdc++.h>
using namespace std;
int a[110][110], b[110][110];
vector<int>aa[110], bb[110];
int aaa[110], bbb[110];
int main(){int n, m, q;  cin>>n>>m>>q;for(int i = 1; i <= n; i++){for(int j = 1; j <= m; j++){cin>>a[i][j];}}for(int i = 1; i <= m; i++){for(int j = 1; j <= n; j++){cin>>b[i][j];}}int ok = 0;while(q--){int x, y;  cin>>x>>y;aa[x].push_back(a[x][y]);bb[y].push_back(b[y][x]);if(aa[x].size()<3|| bb[y].size()<3)continue;int cc = 0;if(aa[x][aa[x].size()-1]>aa[x][aa[x].size()-2] && aa[x][aa[x].size()-1]>aa[x][aa[x].size()-3])cc++;if(bb[y][bb[y].size()-1]>bb[y][bb[y].size()-2] && bb[y][bb[y].size()-1]>bb[y][bb[y].size()-3])cc++;if(cc==2 && !aaa[x] && !bbb[y]){aaa[x] = 1;  bbb[y] = 1;cout<<x<<" "<<y<<"\n";ok = 1;}}if(ok==0){cout<<"PTA is my only love\n";}return 0;
}

7-8 浪漫侧影 (25 分)

7-8 浪漫侧影 (25 分)
v.JPG

“侧影”就是从左侧或者右侧去观察物体所看到的内容。例如上图中男生的侧影是从他右侧看过去的样子,叫“右视图”;女生的侧影是从她左侧看过去的样子,叫“左视图”。

520 这个日子还在打比赛的你,也就抱着一棵二叉树左看看右看看了……

我们将二叉树的“侧影”定义为从一侧能看到的所有结点从上到下形成的序列。例如下图这棵二叉树,其右视图就是 { 1, 2, 3, 4, 5 },左视图就是 { 1, 6, 7, 8, 5 }。

fig.JPG

于是让我们首先通过一棵二叉树的中序遍历序列和后序遍历序列构建出一棵树,然后你要输出这棵树的左视图和右视图。

输入格式:
输入第一行给出一个正整数 N (≤20),为树中的结点个数。随后在两行中先后给出树的中序遍历和后序遍历序列。树中所有键值都不相同,其数值大小无关紧要,都不超过 int 的范围。

输出格式:
第一行输出右视图,第二行输出左视图,格式如样例所示。

输入样例:
8
6 8 7 4 5 1 3 2
8 5 4 7 6 3 2 1
输出样例:
R: 1 2 3 4 5
L: 1 6 7 8 5

#include "bits/stdc++.h"
using namespace std;int mid[25], post[25];
struct node{int l, r;
}tree[25];
int build(int l1,int r1,int l2,int r2){if (l1 > r1) return 0;int rt = post[r2], i = l1;while (mid[i] != rt) i++;int cnt = i - l1;tree[rt].l = build(l1, i - 1, l2, l2 + cnt - 1);tree[rt].r = build(i + 1, r1, l2 + cnt, r2 - 1);return rt;
}
vector<int>f[30];
int mxh = 0;
void dfs(int u, int h){mxh = max(mxh, h);f[h].push_back(u);if(tree[u].l!=0)dfs(tree[u].l,h+1);if(tree[u].r!=0)dfs(tree[u].r,h+1);
}int main(){int n;cin >> n;for (int i = 1; i <= n; i++) cin >> mid[i];for (int i = 1; i <= n; i++) cin >> post[i];int root = build(1, n, 1, n);dfs(root,1);cout<<"R:";for(int i = 1; i <= mxh; i++){cout<<" "<<f[i].back();}cout<<"\n";cout<<"L:";for(int i = 1; i <= mxh; i++){cout<<" "<<f[i][0];}return 0;
}

【PTA】520 钻石争霸赛 2021,119分相关推荐

  1. PTA 520 钻石争霸赛 2021

    有一道题没来得及做,目前的排名是57,不知道后面会被挤到哪里. 文章目录 7-1 自动编程 (5 分) 7-2 加油冲鸭 (10 分) 7-3 520的表白 (10 分) 7-4 奇葩楼层 (15 分 ...

  2. PAT 520 钻石争霸赛 2021 118分题解(满分120)

    序: 为了锻炼自己的编程水平,参加了此次520的编程比赛,因此没有好好准备520礼物(大哭.png),下次520练习赛再也不参加了,还是npy更重要.但不过这次既然参加了,就总结一下吧.这次总分118 ...

  3. 520 钻石争霸赛 2021 PTA 1-6题

    520 钻石争霸赛 2021 PTA 7-1 自动编程 (5 分) 7-2 加油冲鸭 (10 分) 7-3 520的表白 (10 分) 7-4 奇葩楼层 (15 分) 7-5 大勾股定理 (15 分) ...

  4. 520 钻石争霸赛 2021 7-8 浪漫侧影 (25 分)

    题目描述 "侧影"就是从左侧或者右侧去观察物体所看到的内容.例如上图中男生的侧影是从他右侧看过去的样子,叫"右视图":女生的侧影是从她左侧看过去的样子,叫&qu ...

  5. 520 钻石争霸赛 2021

    文章目录 7-1 自动编程 (5 分) 输入格式: 输出格式: 输入样例: 输出样例: Code 7-2 加油冲鸭 (10 分) 输入格式: 输出格式: 输入样例 1: 输出样例 1: 输入样例 2: ...

  6. PTA 520钻石争霸赛题解

    第一题 7-1 考试周 (5分) 考试周快到了,浙江大学的电子屏又调皮了-- 本题请你帮小编写一个自动倒计时的程序,对给定的日期(例如"腊八"就对应 8)和倒计时天数(例如电子屏上 ...

  7. 520 钻石争霸赛 2021 7-7 约会大作战

    7-7 约会大作战 题目 某社团开展了一个"快闪"相亲活动,活动规则如下: (1)社团负责人将所有人分为两组,并收集了每个人对另外一组的所有人的好感度: (2)然后社团负责人会随机 ...

  8. 520 钻石争霸赛 2023

    活动链接 520 钻石争霸赛 2023 520-1 520无尽爱 520-2 心动指数 520-3 不要怕,爱! 520-4 天生一对 520-5 翻倒数 520-6 情侣数 520-7 撒狗粮 52 ...

  9. 520 钻石争霸赛 7-2 真的恭喜你 (10分)

    当别人告诉你自己考了 x 分的时候,你要回答说:"恭喜你考了 x 分!"比如小明告诉你他考了90分,你就用汉语拼音打出来 gong xi ni kao le 90 fen!. 但是 ...

最新文章

  1. mongoose手动生成ObjectId
  2. [AX]AX2012 使用.NET程序集部署
  3. ipvs-dr模型及算法、keepalived基本应用、keepalive+ipvs实现高可用
  4. 如何在一个文件中写多个Vue组件(译-有删改)
  5. C# Newtonsoft.Json JsonSerializerSettings 全局序列化设置
  6. 纪念自己的第四个App:秘密Secret
  7. 定点c程序之一:定标
  8. 行业研究报告基本分析思路
  9. shell脚本获取系统的前一天日期,格式为yyyymmdd
  10. 做一个项目,平时都用到哪些工具提高效率(下)
  11. OpenCV3学习(1)——基本数据类型
  12. 游戏开发筑基之用“*“输出三角形(一个for循环)及打印控制台进度条
  13. oracle复合索引第一个字段,复合索引的先决使用条件 - stacktestor的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  14. ArgularJS和mdui的对话框冲突的解决方案
  15. Nginx 集群和IP反向代理
  16. idea导入项目出现时钟标志
  17. android led 字体下载,Android app全局字体设置
  18. (转载)Delphi开发经验谈
  19. 前端JS时间验证,结束时间不早于开始时间
  20. 2020icpc沈阳打铁记

热门文章

  1. 冷知识 —— 地名的解释
  2. 二叉搜索树相关性质的应用
  3. vim 与 ascii 码表与可显示字符
  4. for 循环 and while 循环(二)
  5. Python Tricks(九)—— 递归遍历目录下所有文件
  6. 老年手机计算机的按键怎么调至桌面,怎样设置一键回到桌面啊,就是这个图标(如图)...
  7. 昆仑通态复制的程序可以用吗_昆仑通态触摸屏如何做时间记录
  8. mpls 保留标签值_浅析MPLS多协议标签交换的发展历程
  9. 线上python课程一般多少钱-排名前十的python零基础编程在线网课一对一费用多少钱...
  10. python程序员月薪-月薪30k的资深程序员用Python爬取了知乎百万用户!并数据分析!...