第十三届蓝桥杯 C/C++ 大学B组 题解

这篇具有很好参考价值的文章主要介绍了第十三届蓝桥杯 C/C++ 大学B组 题解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第十三届蓝桥杯 C/C++ 大学B组 题解

A

进制计算简单模拟

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + 7;
const int mod = 1e9 + 7;
signed main() {
    int a[] = {2, 0, 2, 2};
    int sum = 0;
    for (int i = 0; i < 4; i++) {
        sum = sum * 9 + a[i];
    }
    cout << sum << endl;
    return 0;
}
// 答案1478

B

遍历2022的每一天,转成字符串拼接,然后判断

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + 7;
const int mod = 1e9 + 7;

bool check(string s) {
    for (int i = 1; i < s.size() - 1; i++) {
        if (s[i] - s[i - 1] == 1 && s[i + 1] - s[i - 1] == 1) return true;
    }
    return false;
}

signed main() {
    int month[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int ans = 0;
    for (int i = 1; i <= 12; i++) {
        for (int j = 1; j <= month[i]; j++) {
            string y = "2022";
            if (i < 10)
                y = y + "0" + to_string(i);
            else {
                y = y + to_string(i);
            }
            if (j < 10)
                y = y + "0" + to_string(j);
            else {
                y = y + to_string(j);
            }
            if (check(y)) ans += 1;
            // cout << y << endl;
        }
    }
    cout << ans << endl;
    return 0;
}

C

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + 7;
const int mod = 1e9 + 7;
signed main() {
    ll a, b, n;
    cin >> a >> b >> n;
    ll week = n / (a * 5 + b * 2);
    ll dy = n % (a * 5 + b * 2);
    ll ans = week * 7;
    if (dy <= 5 * a) {
        ans = ans + (dy + a - 1) / (a);
    } else {
        ans += 5;
        dy -= 5 * a;
        ans = ans + (dy + b - 1) / b;
    }
    cout << ans << endl;
    return 0;
}

D

找规律

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + 7;
const int mod = 1e9 + 7;
// 暴力找出规律
vector<int> solve(int n) {
    // int n;
    // cin >> n;
    vector<int> a(n + 1, 0), ans(n + 1, 0);
    int op = 1;
    while (op <= 100) {
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                a[j] += 1;
            }
            // cout << "第" << op << "天傍晚"
            //      << "\n";
            for (int j = 1; j <= n; j++) {
                // cout << a[j] << " ";
                ans[j] = max(ans[j], a[j]);
            }
            // cout << "\n";
            a[i] = 0;
            op += 1;
        }
        for (int i = n - 1; i > 1; i--) {
            for (int j = 1; j <= n; j++) {
                a[j] += 1;
            }
            // cout << "第" << op << "天傍晚"
            //      << "\n";
            for (int j = 1; j <= n; j++) {
                // cout << a[j] << " ";
                ans[j] = max(ans[j], a[j]);
            }
            a[i] = 0;
            // cout << "\n";
            op += 1;
        }
    }
    // cout << n << endl;
    // for (int i = 1; i <= n; i++) {
    //     cout << ans[i] << " ";
    // }
    return ans;
}

void work() {
    int n;
    cin >> n;
    if (n == 1) {
        cout << 1 << endl;
        return;
    }
    vector<int> vec(n + 1, 0);
    int num = (n - 1) * 2;
    for (int i = 1; i <= n / 2; i++) {
        vec[i] = vec[n - i + 1] = num;
        num -= 2;
    }
    if (n % 2 == 1) {
        vec[n / 2 + 1] = n - 1;
    }
    for (int i = 1; i <= n; i++) {
        cout << vec[i] << " ";
    }
    cout << endl;
}

signed main() {
    // for (int i = 1; i <= 100; i++) {
    //     solve(i);
    //     cout << endl;
    // }
    work();
    return 0;
}
/*
0 0 0 第一天早上
1 1 1 第一天晚上
0 1 1 第二天早上
1 2 2 第二天晚上
1 0 2 第三天早上
2 1 3 第三天晚上
2 1 0 第四天早上
3 2 1 第四天晚上
3 0 1 第五天早上
4 1 2 第五天晚上


*/

E

主要就是看懂题意和取模的问题。

321 对应八进制、十进制、二进制

计算过程为: 3 ∗ 10 ∗ 2 + 2 ∗ 2 + 1 = 65 3*10*2+2*2+1 = 65 3102+22+1=65

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define int long long
const int N = 1e5 + 7;
const int mod = 1e9 + 7;
int X, n, m;
int a[N], b[N];

int get_bit(int a, int b, int c) {
    return (a > b ? a : b) > c ? (a > b ? a : b) : c;
}

signed main() {
    cin >> X;
    cin >> n;
    memset(a, 0, sizeof(a));
    memset(b, 0, sizeof(b));
    for (int i = n; i >= 1; i--) cin >> a[i];

    cin >> m;
    for (int i = m; i >= 1; i--) cin >> b[i];

    ll ans = 0;

    for (int i = n; i > 1; i--) {
        ans = ((ans + a[i] - b[i]) * get_bit(a[i - 1] + 1, b[i - 1] + 1, 2)) % mod;
    }

    ans += a[1] - b[1];

    cout << ans << endl;
    return 0;
}
/*
321 65
3*10*2+2*2+1 = 65
*/

F

通过枚举上下边界,和前缀和,就转成了一维数组求子段和小于等于k的问题

经典双指针解决文章来源地址https://www.toymoban.com/news/detail-410566.html

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + 7;
const int mod = 1e9 + 7;

ll a[510][510];

signed main() {
    ll n, m, k;
    cin >> n >> m >> k;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            cin >> a[i][j];
            a[i][j] += a[i - 1][j];
        }
    }

    ll ans = 0;

    // 通过枚举上下边界,和前缀和,就转成了一维数组求子段和小于等于k的问题 
    // 经典双指针解决

    for (int i = 1; i <= n; i++) { //枚举上边届
        for (int j = i; j <= n; j++) { // 枚举下边界
            int l = 1;
            ll sum = 0;
            for (int r = 1; r <= m; r++) {
                sum += a[j][r] - a[i - 1][r];
                while (sum > k) {
                    sum -= a[j][l] - a[i - 1][l];
                    l++;
                }
                ans += r - l + 1;
            }
        }
    }

    cout << ans << endl;

    return 0;
}

G

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define int long long
const int N = 1e5 + 7;
const int mod = 1e9 + 7;
signed main() {
    int n;
    cin >> n;
    vector<int> dp(n + 4, 0);
    dp[1] = 1;
    dp[2] = 2;
    dp[3] = 5;
    for (int i = 4; i <= n; i++) {
        dp[i] = (dp[i - 1] * 2 % mod + dp[i - 3] % mod) % mod;
    }
    cout << dp[n] << endl;

    return 0;
}

到了这里,关于第十三届蓝桥杯 C/C++ 大学B组 题解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式省赛客观题以及详细题解

    题解:   概念题。 MCO引脚,是单片机对外提供时钟的引脚。 HSE,高速外部时钟信号,时钟源由外部晶体/陶瓷谐振器与外部时钟; HSI,高速的内部时钟,由内部8MHz的RC振荡器产生,可直接作为系统时钟或在2分频后作为PLL输入; SYSCLK,是系统时钟; HSE/2,对高速外部时钟进

    2023年04月16日
    浏览(43)
  • 【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式国赛程序设计试题以及详细题解

      本届国赛试题主要包含 LCD 、 LED 、 按键 、 EEPROM 、 串口 、 模拟电压输入 、 脉冲输入输出 七大部分,其中前面三个部分是蓝桥杯嵌入式的“亲儿子”(必考部分),而剩下的四个部分都为“干儿子”(考频相对较高)。   相对于本届省赛两套试题:   本套试题 串口数

    2024年02月02日
    浏览(52)
  • 第十三届蓝桥杯国赛 Web 前端组(大学组) 真题练习及答案解析

    考点:数组方法 思路:利用splice()方法 考点:flex布局 思路:照着写就行 考点: DOM 操作 思路:1 先做需求:隐藏开始按钮,方格上的图片显示后又隐藏。 2 再做第一次点击图片翻转效果。 3 做第二次点击的逻辑判断,若水果相同则,进行消除,加分操作,水果不同,进行隐

    2024年02月06日
    浏览(41)
  • 第十三届蓝桥杯省赛与国赛真题题解大汇总(十四届参赛者必备)

      大家好,我是执梗。本文汇总了我写的第十三届蓝桥杯所有省赛真题与国赛真题,会针对每道题打出我自己的难度评星⭐️,也会给出每道题的算法标签,帮助大家更有针对性的去学习和准备,当然许多题目由于难度或时间的原因暂未更新,如果有不懂的问题也可以在评

    2024年02月11日
    浏览(65)
  • 第十三届蓝桥杯经验分享

    当时报名参加蓝桥杯,是为了以后工作能有个证吧,但苦于大三 没有时间准备 ,就这样轻装上阵, 一点儿没复习 , 真题也没做,练习也没整 , 一篇经验贴也没仔细看 ,结果还拿了个省三,不知道是不是参与奖哈哈。但作为过来人,还是有点经验的,特来分享 ヽ(✿゚▽゚

    2024年02月15日
    浏览(32)
  • 第十三届蓝桥杯省赛Python 组

    本次所有代码均存放于仓库: Github :GxlHus/Algorithm at 蓝桥杯 (github.com) Gitee :Algorithm: 算法解题 - Gitee.com 原题目:第十三届蓝桥杯大赛软件赛省赛_PB.pdf · AYO/Algorithm - Gitee.com 本次省赛题目总体来说不难,总体质量比较高,尤其是后边几道题,虽然能轻易做出来,但是想跑通所

    2023年04月17日
    浏览(27)
  • 十三届蓝桥杯JAVA B组国赛部分题解

    大学总共参加了三届蓝桥杯,这应该是我最后一次参加蓝桥杯了,再写一篇题解算是给自己的业余竞赛结个尾。我的题解肯定不是最好的,甚至有许多错误,能给大家提供下思路就行。 思路:模拟下时钟就行,签到题 答案:502-8=494(由于匀速运动,59分59秒到0分0秒实际算一次

    2024年02月08日
    浏览(29)
  • 6 -【第十三届】蓝桥杯物联网试题 (省赛题)

    1.将时钟树频率设置成32MHz 2.将GPIO引脚做如下配置: 引脚功能 使能中断 打开串口通信2 3.生成工程代码 4.移植OLED、LoRa库文件 5.编写逻辑代码 Task_Main.h Task_Main.c stm32l0xx_it.c main.c 1.将时钟树频率设置成32MHz 2.将GPIO引脚做如下配置: 引脚功能 使能中断 3.生成工程代码 4.移植LoRa、

    2023年04月08日
    浏览(56)
  • 蓝桥杯第十三届决赛真题-左移右移

    题目链接 问题描述 小蓝有一个长度为 N 的数组, 初始时从左到右依次是 1,2,3, …N 。 之后小蓝对这个数组进行了 M 次操作, 每次操作可能是以下 2 种之一: 左移 x, 即把 x 移动到最左边。 右移 x, 即把 x 移动到最右边。 请你回答经过 M 次操作之后, 数组从左到右每个数是多少? 输

    2023年04月09日
    浏览(34)
  • 蓝桥杯单片机学习14——第十三届省赛题

    上期我们学习了NE555方波发生器频率测量,讲到我会更新之后省赛的题目,那么,他来了。 首先声明:我还没有参加蓝桥杯单片机比赛,也没有拿过奖,所以我写的代码注定不会那么完美,存在BUG是必然的,我写这个系列的目的纯粹是为了记录我的学习………… 关于功能描述

    2024年02月06日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包