PAT(乙级)2020年秋季考试
比赛链接:https://pintia.cn/market/item/1302816969611366400
7-1 多二了一点 (15分)
题解
模拟。
代码
#include <bits/stdc++.h>
using namespace std; int sum(string s) {
int res = 0;
for (char c : s) res += c - '0';
return res;
} int main() {
string s;
cin >> s;
if (s.size() & 1) {
cout << "Error: " << s.size() << " digit(s)" << "\n";
} else {
string s_x = s.substr(s.size() / 2);
string s_y = s.substr(0, s.size() / 2);
if (sum(s_x) - sum(s_y) == 2)
cout << "Yes: " << s_x << " - " << s_y << " = 2" << "\n";
else
cout << "No: " << s_x << " - " << s_y << " != 2" << "\n";
}
}
7-2 数字之王 (20分)
题解
模拟。
代码
#include <bits/stdc++.h>
using namespace std; int func(int n) {
if (n == 0) return 0;
int mul = 1;
while (n) {
int x = n % 10;
mul *= x * x * x;
n /= 10;
}
int res = 0;
while (mul) {
res += mul % 10;
mul /= 10;
}
return res;
} int main() {
int N1, N2;
cin >> N1 >> N2;
vector<int> a(N2 - N1 + 1);
iota(a.begin(), a.end(), N1);
while (any_of(a.begin(), a.end(), [](int x) { return x >= 10; })) {
for (auto &x : a)
x = func(x);
}
int mx = 0;
map<int, int> cnt;
for (auto x : a) {
if (++cnt[x] > mx)
mx = cnt[x];
}
vector<int> ans;
for (auto i : cnt) {
if (i.second == mx)
ans.push_back(i.first);
}
sort(ans.begin(), ans.end());
cout << mx << "\n";
for (int i = 0; i < ans.size(); i++)
cout << ans[i] << " \n"[i == ans.size() - 1];
}
7-3 如需挪车请致电 (20分)
题解
有点麻烦的模拟。
代码
#include <bits/stdc++.h>
using namespace std; map<string, int> mp{
{"ling", 0},
{"yi", 1},
{"er", 2},
{"san", 3},
{"si", 4},
{"wu", 5},
{"liu", 6},
{"qi", 7},
{"ba", 8},
{"jiu", 9}
}; int to_int(string s) {
if (mp.count(s)) {
return mp[s];
} else {
int res = 0;
for (int i = 0; i < int(s.size()); i++)
res = res * 10 + s[i] - '0';
return res;
}
} int func(string s) {
if (s.find("sqrt") != string::npos) {
return sqrt(to_int(s.substr(4)));
}
for (char oper : string("+-*/%^")) {
int oper_pos = s.find(oper);
if (oper_pos != string::npos) {
int a = to_int(s.substr(0, oper_pos));
int b = to_int(s.substr(oper_pos + 1));
if (oper == '+') return a + b;
if (oper == '-') return a - b;
if (oper == '*') return a * b;
if (oper == '/') return a / b;
if (oper == '%') return a % b;
if (oper == '^') return pow(a, b);
}
}
return to_int(s);
} int main() {
for (int i = 0; i < 11; i++) {
string s;
cin >> s;
cout << func(s);
}
}
7-4 胖达与盆盆奶 (20分)
题解
将熊猫的编号视作横坐标,体重视作纵坐标,将纵坐标相连即得一条凹凸的曲线,每次从曲线的凹处向两边延伸,两个凹处的相接点取较大值。
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> a(n);
for (int i = 0; i < n; i++)
cin >> a[i];
vector<int> p(n);
iota(p.begin(), p.end(), 0);
sort(p.begin(), p.end(), [&](int x, int y) {
return a[x] < a[y];
});
vector<int> milk(n);
vector<bool> vis(n);
for (auto i : p) {
if (vis[i]) continue;
milk[i] = 200;
vis[i] = true;
for (int j = i - 1; j >= 0 and a[j] >= a[j + 1]; j--) {
milk[j] = max(milk[j], milk[j + 1] + (a[j] > a[j + 1] ? 100 : 0));
vis[j] = true;
}
for (int j = i + 1; j < n and a[j] >= a[j - 1]; j++) {
milk[j] = max(milk[j], milk[j - 1] + (a[j] > a[j - 1] ? 100 : 0));
vis[j] = true;
}
}
cout << accumulate(milk.begin(), milk.end(), 0) << "\n";
}
7-5 买地攻略 (25分)
题解一
$O_{(n^2)}$,枚举区间的左右端点,但理论上来讲应该过不了。
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<int> a(n);
for (int i = 0; i < n; i++)
cin >> a[i];
int ans = 0;
for (int i = 0; i < n; i++) {
int sum = 0;
for (int j = i; j < n; j++) {
sum += a[j];
if (sum <= m) ++ans;
}
}
cout << ans << "\n";
}
题解二
$O_{(nlog_n)}$,枚举区间左端点,利用前缀和二分查找右端点。
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<int> a(n);
for (int i = 0; i < n; i++)
cin >> a[i];
vector<int> pre(n);
for (int i = 0; i < n; i++) {
if (i == 0) pre[i] = a[i];
else pre[i] = pre[i - 1] + a[i];
}
int ans = 0;
for (int i = 0; i < n; i++) {
int j = upper_bound(pre.begin(), pre.end(), (i == 0 ? 0 : pre[i - 1]) + m) - pre.begin();
ans += j - i;
}
cout << ans << "\n";
}
PAT(乙级)2020年秋季考试的更多相关文章
- PAT(甲级)2017年秋季考试
PAT(甲级)2017年秋季考试 D题红黑树待补21/30 大佬的代码,看着想哭,这才是艺术啊 A Cut Integer 模拟题 #include<bits/stdc++.h> usin ...
- PAT乙级:1094 谷歌的招聘 (20分)
PAT乙级:1094 谷歌的招聘 (20分) 题干 2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘.内容超级简单,就是一个以 .com 结尾的网址,而前面 ...
- PAT乙级:1088 三人行 (20分)
PAT乙级:1088 三人行 (20分) 题干 子曰:"三人行,必有我师焉.择其善者而从之,其不善者而改之." 本题给定甲.乙.丙三个人的能力值关系为:甲的能力值确定是 2 位正整 ...
- PAT乙级:1072开学寄语(20分)
PAT乙级:1072开学寄语(20分) 题干 下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其 QQ,封其电脑,夺其手机,收其 ipad,断其 wifi,使其百无聊赖,然后,净面 ...
- PAT乙级:1090危险品装箱(25分)
PAT乙级:1090危险品装箱(25分) 题干 集装箱运输货物时,我们必须特别小心,不能把不相容的货物装在一只箱子里.比如氧化剂绝对不能跟易燃液体同箱,否则很容易造成爆炸. 本题给定一张不相容物品的清 ...
- PAT乙级:1053 住房空置率 (20分)
PAT乙级:1053 住房空置率 (20分) 题干 在不打扰居民的前提下,统计住房空置率的一种方法是根据每户用电量的连续变化规律进行判断.判断方法如下: 在观察期内,若存在超过一半的日子用电量低于某给 ...
- PAT乙级:1057 数零壹 (20分)
PAT乙级:1057 数零壹 (20分) 题干 给定一串长度不超过 105 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一 ...
- PAT乙级:1069 微博转发抽奖 (20分)
PAT乙级:1069 微博转发抽奖 (20分) 题干 小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包.请你编写程序帮助他确定中奖名单. 输入 ...
- PAT乙级:1092 最好吃的月饼 (20分)
PAT乙级:1092 最好吃的月饼 (20分) 题干 月饼是久负盛名的中国传统糕点之一,自唐朝以来,已经发展出几百品种. 若想评比出一种"最好吃"的月饼,那势必在吃货界引发一场腥风 ...
随机推荐
- MongoDB 基础手册(一)
作者:云怀大师兄 博客园:https://www.cnblogs.com/yunhuai/ 公众号:云怀大师兄 与Mysql概念对比 说明 MySQL MongoDB 数据库 DatatBase Da ...
- 【项目实践】一文带你搞定Spring Security + JWT
以项目驱动学习,以实践检验真知 前言 关于认证和授权,R之前已经写了两篇文章: [项目实践]在用安全框架前,我想先让你手撸一个登陆认证 [项目实践]一文带你搞定页面权限.按钮权限以及数据权限 在这两篇 ...
- python模块详解 | unittest(单元测试框架)(持续更新中)
目录: why unittest? unittest的四个重要概念 加载测试用例的三个方法 自动加载测试用例 忽略测试和预期失败 生成html测试报告 why unittest? 简介: Unitte ...
- 在 Azure 上执行一些简单的 python 工作
1. 公司禁用了 python 我的主业是桌面开发,偶尔也需要搞搞数据和算法.最近在用 python 处理一些工作,正搞得热火朝天,突然 python 就不能用了,一查记录原来是 IT 管理员禁止我使 ...
- 私有镜像仓库Harbor基础介绍与部署
企业级私有镜像仓库Harbor 一:介绍 Harbor,是一个英文单词,意思是港湾,港湾是干什么的呢,就是停放货物的,而货物呢,是装在集装箱中的,说到集装箱,就不得不提到Docker容器,因为dock ...
- 使用line_profiler对python代码性能进行评估优化
性能测试的意义 在做完一个python项目之后,我们经常要考虑对软件的性能进行优化.那么我们需要一个软件优化的思路,首先我们需要明确软件本身代码以及函数的瓶颈,最理想的情况就是有这样一个工具,能够将一 ...
- 用SAP浏览网页
在SAP里,通过两个类就可以做一个简单的,嵌入sap里的网页.这两个类就是 1. cl_gui_custom_container 这个类是自定义屏幕里用得,也就是画一个container,在这个容器中 ...
- Java中,那些关于String和字符串常量池你不得不知道的东西
老套的笔试题 在一些老套的笔试题中,会要你判断s1==s2为false还是true,s1.equals(s2)为false还是true. String s1 = new String("xy ...
- 支付宝沙箱环境使用(Alipay Easy SDK ) .Net示例
新版服务端 SDK(Alipay Easy SDK)适用于 Java.C#.PHP 编程语言,对开放能力的 API 进行了更加贴近高频场景的精心设计与裁剪,简化了服务端调用方式,让开发者享受极简编程体 ...
- 浅谈java中线程和操作系统线程
在聊线程之前,我们先了解一下操作系统线程的发展历程,在最初的时候,操作系统没有进程线程一说,执行程序都是串行方式执行,就像一个队列一样,先执行完排在前面的,再去执行后面的程序,这样的话很多程序的响应就 ...