2022年第十三届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组完整题目和详细解析

大家蓝桥都做完了吗!!!5+5变2+8梯度就上来了,感觉含金量会好一点(线上当我没说)

A. 进制转换

2022年第十三届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组完整题目和详细解析

题目有争议,有人认为 012 不算顺子,有人认为 012 算。我个人倾向于 012 算顺子,因此答案为 14。以下是暴力代码:

(倒着的顺子肯定就不算了吧)

C. 刷题统计

2022年第十三届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组完整题目和详细解析

考虑一个灌木最多长多高。假设从左往右修剪,那么当剪到第 i i i 个灌木的时候,继续修剪到 n n n,再回到 i i i 修剪,这一过程就是这棵灌木的上限。除此之外还有第二种情况,即从右往左修剪,剪到位置 i i i,继续修剪到 1,再回到 i i i 修剪。所以我们只需要对两种情况求一个最大高度就行了。

E. X 进制减法

2022年第十三届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组完整题目和详细解析

需要首先理解数字中每一位的权值。例如十进制中 123 的 1 权值为 1 0 2 10^2 102,表示 1 ? 1 0 2 = 100 1*10^2=100 1?102=100,而四进制中的 123 的 1 权值为 1 ? 4 2 = 16 1*4^2=16 1?42=16

先将两个数字右对齐,然后从右边开始逐位进行减法操作。每一位的进制虽不相同,但是题目要求减法的结果最小,即两个数字尽量接近。位数一定时,如果进制大,则两个数字差距就大;如果进制小,则两个数字差距就小。所以我们应该让每一位的进制尽可能地小,但是又需要让数字合法,例如某一个数字是 5,那么这一位至少是六进制(5+1=6)。所以我们算出每一位的进制最小是多少,进行减法即可。

当每一位进制不同时,权值的计算方式是当前位右边所有位进制的乘积。例如个位是四进制,十位是六进制,那么百位的权值就是 4 ? 6 = 24 4*6=24 4?6=24。(此处的个十百位只是方便理解,表示的是从右往左数的第几位)

#include using namespace std;const int mod = 1e9 + 7;long long a[100001], b[100001];int main(){int n, m1, m2;cin >> n >> m1;for(int i = 1; i  m1; i++){ cin >> a[i];}cin >> m2;for(int i = m1-m2+1; i  m2; i++){ // 这里为了右对齐,所以 i 的起始值需要注意一下 cin >> b[i];}long long val = 1, ans = 0;for(int i = m1; i >= 1; i--){ int z = max(2, max(a[i], b[i]) + 1来源:nuoyanli
                                                        

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年3月15日
下一篇 2022年3月15日

相关推荐