目录
- 第十三届蓝桥杯大赛软件赛省赛C/C++大学B组真题(考后回顾)
-
- 试题 A: 九进制转十进制
- 试题 B: 顺子日期
- 试题 C: 刷题统计
- 试题 D: 修剪灌木
- 试题 E: X 进制减法
- 试题 F: 统计子矩阵
- 试题 G: 积木画
- 试题 H: 扫雷
- 试题 I: 李白打酒加强版
- 试题 J: 砍竹子
第十三届蓝桥杯大赛软件赛省赛C/C++大学B组真题(考后回顾) 试题 A: 九进制转十进制
文章图片
代码:
1478
试题 B: 顺子日期
文章图片
个人理解:
由于题可知在20220101 ~ 20221231中,存在的连续的3个数字有四种情况分别为012,210,123,321。代码:
根据题面20220123 就是一个顺子日期,因为它出现了一个顺子:123;而 20221023 则不是一个顺子日期,它一个顺子也没有。
我们可以知道210,012不满足情况,类比210,321也是从大到小,因此得出结论顺子只有123这一种情况。
#include
#include
#include
using namespace std;
int a[13] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
int main() {
int s = 20220101;
int e = 20221231;
int cnt = 0;
for(int i = s;
i <= e;
i++) {
int m = (i % 10000) / 100;
int d = (i % 100);
if(m > 12) continue;
if(d == 0 || d > a[m])continue;
string tmp = "";
int t = i;
while(t) {
int aa = t % 10;
tmp = tmp + (char)('0' + aa);
t = t / 10;
}
reverse(tmp.begin(),tmp.end());
int a1 = tmp.find("123");
//int a2 = tmp.find("321");
//int a3 = tmp.find("012");
//int a4 = tmp.find("210");
if(a1 != -1) {
cout<
运行结果:
20220123
20221123
20221230
20221231
4
试题 C: 刷题统计
文章图片
个人理解:
首先计算每周一共需要刷多少题 sum = a * 5 + b * 2;代码:
随后计算有多少个完整的7天ans = n / sum
得出完整的天数ans = ans * 7;
在此之后剩下的题量肯定能在7天内完成,我们进行便利即可
注意数据规模需要开long long
#include
#include
using namespace std;
#define ll long long
int main() {
ll a,b,n,ans = 0,km = 0;
cin>>a>>b>>n;
ll sum = a * 5 + b * 2;
ans = (n / sum) * 7;
km = n % sum;
int cnt = 0;
while(km > 0) {
++cnt;
if(cnt <= 5) km = km - a;
else km = km - b;
}
ans = ans + cnt;
cout<
试题 D: 修剪灌木
文章图片
个人理解:
分成一半一半,前一半与后一半是对称的代码:
#include
#include
using namespace std;
#define ll long long
const int maxn = 1e4 + 10;
int ans[maxn];
void init(int n) {
int m = (n + 1) / 2;
for(int i = 1;
i <= m;
i++) {
int tmp = max(i,2 * (n - i));
ans[i] = tmp;
ans[n - i + 1] = tmp;
}
}
int main() {
int n;
cin>>n;
init(n);
for(int i = 1;
i <= n;
i++) cout<
试题 E: X 进制减法
文章图片
代码:
//呜呜呜呜,不会--
试题 F: 统计子矩阵
文章图片
个人理解:
【算法练习|2022年蓝桥杯(第十三届蓝桥杯大赛软件赛省赛C/C++大学B组真题(考后回顾))】该题需要动态规划,但是我没有规划出来,只能用二维前缀和骗分了。代码:
#include
#include
#include
#include
试题 G: 积木画
文章图片
个人理解:
该题为找规律。代码:
首先将画布上的积木排列方式分为两类,第一类为全是l型积木,第二类为L型和l型混合排列(可以全是L型积木)
总的排列方式数量 = 第一类数量 + 第二类数量
我们针对两类进行分析:
其中第一类排列方式数量随着N的增加,是一个类斐波那契额数列,前两个相加等于第三个
第二类规律是从第三个开始随着n的增加得出公式: 前一个的第二类数量 * 2 + 2
#include
#include
#include
#include
试题 H: 扫雷
文章图片
个人理解:
该题我进行了暴力模拟,希望能得一半分代码:
#include
#include
#include
#include
试题 I: 李白打酒加强版
文章图片
个人理解:
李白打酒加强版,暴力骗分代码:
2014年李白打酒,2022年李白打酒加强版。
#include
#include
#include
#include
试题 J: 砍竹子
文章图片
代码:
//不会------
考后个人理解,仅供参考,静等官方题解
期望能国赛
完美撒花
推荐阅读
- 题解|2022年第十三届蓝桥杯省赛C/C++B组个人题解
- #|2022年第十三届蓝桥杯大赛软件赛省赛——C++ B组
- 算法|第十三届蓝桥杯省赛C++ B组比赛有感
- 题解|第十三届蓝桥杯大赛软件赛省赛B组(个人思路)
- 第十三届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组
- 蓝桥杯|2021年 第12届 蓝桥杯 Java B组 省赛真题详解及小结【第1场省赛 2021.04.18】
- 蓝桥杯|2021年 第12届 蓝桥杯 Java B组 省赛真题详解及小结【第2场省赛 2021.05.09】
- 蓝桥杯|2021第十二届蓝桥杯大赛软件赛省赛C++ C组真题题解
- 蓝桥杯|2021第十二届蓝桥杯大赛软件赛省赛C++ B组真题题解