2022第十三届蓝桥杯省赛C/C++B组 真题题解

目录

A.九进制转十进制

B.顺子日期

C.刷题统计

D.修剪灌木

E.X 进制减法

F.统计子矩阵

G.积木画

H.扫雷

I.李白打酒加强版

J.砍竹子


特别说明:本文章运用了万能头文件#include <bits/stdc++.h>,会降低代码的运行效率,读者可根据实际情况进行更改。不难。

A.九进制转十进制

问题描述
九进制正整数(2022)₉转换成十进制等于多少?

法一:

2 * 9^3 + 0 * 9^2 + 2 * 9^1 + 2 * 9^0=1478

此题用代码简直是在浪费时间,填空题应该本着能省则省(省时间)的原则。

哈哈哈哈哈哈,难道这不是最简单的方法吗?

#include <bits/stdc++.h>
using namespace std;

int main()
{
	cout << 2 * 9^3 + 0 * 9^2 + 2 * 9^1 + 2 * 9^0;
	return 0;
}

 法一:老老实实的转换

#include <bits/stdc++.h>
using namespace std;

const int N = 1e5 + 10;
int main()
{
	int x = 2022;
	int a = 1;
	int ans = 0;
	while(x) {
		ans += (x % 10) * a;
		a = a * 9;
		x /= 10;
	}
	cout << ans;

	return 0;
}

答案:1478

B.顺子日期

问题描述

小明特别喜欢顺子。顺子指的就是连续的三个数字:123、456等。顺子日期指的就是在日期的yyyymmdd表示法中,存在任意连续的三位数是一个顺子的日期。例如20220123就是一个顺子日期,因为它出现了一个顺子:123;而20221023则不是一个顺子日期,它一个顺子也没有。小明想知道在整个2022年份中,一共有多少个顺子日期。

思路

由于只需要判断2022年这一个年份,所以,只需要手写几个日期即可。此题具有很大的争议,很多人在讨论 012 算不算顺子,因为题目里说 0123 中的顺子是 123,我是算了的,不算的话答案应该是 4。

法一:日历

年份 2022 是不变的,而且不可能搭上顺子,所以只考虑后四位即可。
可能搭上顺子的月份有:
    1月:0120 ~ 0129 共 10 个,顺子是 012 (其中 0123 可以认为顺子是 123)
    10月:1012,顺子是 012
    11月:1123,顺子是 123
    12月:1230,1231,顺子是 123
一共 14 个
#include <iostream>
using namespace std;
 
bool isSequential(int num) {
    string str = to_string(num);
    for (int i = 0; i < str.length() - 2; ++i) {
        if (str[i + 1] == str[i] + 1 && str[i + 2] == str[i] + 2) {
            return true;
        }
    }
    return false;
}
 
int main() {
    int ans = 0;
    
    for (int date = 20220101; date <= 20221231; ++date) {
        if (date % 100 < 32 && (date / 100) % 100 < 13 && isSequential(date)) {
            cout << date << endl;
            ++ans;
        }
    }
 
    cout << "共有 " << ans << "
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨正国y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值