第十四届蓝桥杯C++--A组题解(更新中)

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

本来考场上做完想着这回图一乐,打打暴力混个省奖得了,看完民间题解感觉跟自己估计的差不多,应该挺寄的,没想到出分捡了个省一,喜提弱省省一倒数
这篇博客把自己会的题先放上来,其他的题慢慢补,好多知识点都没碰到过。。、
至于为什么一个月前的比赛现在才发,是因为我突然发现洛谷上已经更新了今年的篮球杯题目了,也刚好没啥事做。。。。

[蓝桥杯 2023 省 A] 填空问题

题目描述

A. 幸运数

小蓝认为如果一个数含有偶数个数位,并且前面一半的数位之和等于后面一半的数位之和,则这个数是他的幸运数字。例如 2314 2314 2314 是一个幸运数字,因为它有 4 4 4 个数位,并且 2 + 3 = 1 + 4 2+3=1+4 2+3=1+4。现在请你帮他计算从 1 1 1 100000000 100000000 100000000 之间共有多少个不同的幸运数字。

B. 有奖问答

小蓝正在参与一个现场问答的节目。活动中一共有 30 30 30 道题目,每题只有答对和答错两种情况,每答对一题得 10 10 10 分,答错一题分数归零。

小蓝可以在任意时刻结束答题并获得目前分数对应的奖项,之后不能再答任何题目。最高奖项需要 100 100 100 分,所以到达 100 100 100 分时小蓝会直接停止答题。

已知小蓝最终实际获得了 70 70 70 分对应的奖项,请问小蓝所有可能的答题情况有多少种?

输入格式

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

您可以通过提交答案文件的方式进行提交。你需要将你的答案放在 1.out2.out 中,其中 1.out 对应 A 题的答案,2.out 对应 B 题的答案。

输入文件包含一个字符,代表题目编号(AB),你需要输出对应的答案。

以下模板供参考:

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

char pid;
int main() {
    cin >> pid;
    if(pid == 'A')
        puts("Answer for Problem A");
    else
        puts("Answer for Problem B");
    return 0;
}

输出格式

提示

第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 A 组 A-B

这俩填空都让我在本地用暴力做出来了,好好写个搜索是能出来的答案就不放了,要拿好成绩这两道肯定得对。。毕竟其他的更做不来了。。。

················································································································
················································································································

[蓝桥杯 2023 省 A] 平方差

题目描述

给定 L , R L,R L,R,问 L ≤ x ≤ R L \leq x \leq R LxR 中有多少个数 x x x 满足存在整数 y , z y,z y,z 使得 x = y 2 − z 2 x=y^2-z^2 x=y2z2

输入格式

输入一行包含两个整数 L , R L,R L,R,用一个空格分隔。

输出格式

输出一行包含一个整数满足题目给定条件的 x x x 的数量。

样例 #1

样例输入 #1

1 5

样例输出 #1

4

提示

【样例说明】
  • 1 = 1 2 − 0 2 1=1^2-0^2 1=1202
  • 3 = 2 2 − 1 2 3=2^2-1^2 3=2212
  • 4 = 2 2 − 0 2 4=2^2-0^2 4=2202
  • 5 = 3 2 − 2 2 5=3^2-2^2 5=3222
【评测用例规模与约定】

对于 40 % 40 \% 40% 的评测用例, L , R ≤ 5000 L,R \leq 5000 L,R5000

对于所有评测用例, 1 ≤ L ≤ R ≤ 1 0 9 1 \leq L \leq R \leq 10^9 1LR109

第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 A 组 C

无脑打表找规律,可以非常明显的看出来mod 4 == 2的数是无解的
需要用O(1)的时间判断,找到规律以后稍微推一下也能很快出来

/*
本地打表找规律
发现只有mod 4 == 2的数无解

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

bool check(int n)
{
    for(int i = 0; i <= 100; i ++) {
        for(int j = i; j <= 101; j ++) {
            if(j * j - i * i == n) return true;
        }
    }

    return false;
}
int main()
{
    for(int i = 1; i <= 100; i ++) {
        if(check(i)) cout << i << endl;
    }

    return 0;
}
*/

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

typedef long long LL;
LL L, R;

int main()
{
    cin >> L >> R;
    
    LL sum = R - L + 1;
    //找到第一个和最后一个无解的数
    while(L % 4 != 2) L ++;
    while(R % 4 != 2) R --;
    
    sum -= ( (R - L) / 4 + 1);
    
    
    cout << sum;
    
    return 0;
}

················································································································
················································································································

[蓝桥杯 2023 省 A] 更小的数

题目描述

第十四届蓝桥杯C++--A组题解(更新中)

小蓝有一个长度均为 n n n 且仅由数字字符 0 ∼ 9 0 \sim 9 09 组成的字符串,下标从 0 0 0 n − 1 n-1 n1,你可以将其视作是一个具有 n n n 位的十进制数字 n u m num num,小蓝可以从 n u m num num 中选出一段连续的子串并将子串进行反转,最多反转一次。小蓝想要将选出的子串进行反转后再放入原位置处得到的新的数字 n u m n e w num_{new} numnew 满足条件 n u m n e w < n u m num_{new}<num numnew<num,请你帮他计算下一共有多少种不同的子串选择方案,只要两个子串在 n u m num num 中的位置不完全相同我们就视作是不同的方案。

注意,我们允许前导零的存在,即数字的最高位可以是 0 0 0,这是合法的。

输入格式

输入一行包含一个长度为 n n n 的字符串表示 n u m num num(仅包含数字字符 0 ∼ 9 0 \sim 9 09),从左至右下标依次为 0 ∼ n − 1 0 \sim n-1 0n1

输出格式

输出一行包含一个整数表示答案。

样例 #1

样例输入 #1

210102

样例输出 #1

8

提示

【样例说明】

一共有 8 8 8 种不同的方案:

  1. 所选择的子串下标为 0 ∼ 1 0\sim1 01,反转后的 n u m n e w = 120102 < 210102 num_{new} = 120102 < 210102 numnew=120102<210102
  2. 所选择的子串下标为 0 ∼ 2 0\sim2 02,反转后的 n u m n e w = 012102 < 210102 num_{new} = 012102 < 210102 numnew=012102<210102
  3. 所选择的子串下标为 0 ∼ 3 0\sim3 03,反转后的 n u m n e w = 101202 < 210102 num_{new} = 101202 < 210102 numnew=101202<210102
  4. 所选择的子串下标为 0 ∼ 4 0\sim4 04,反转后的 n u m n e w = 010122 < 210102 num_{new} = 010122 < 210102 numnew=010122<210102
  5. 所选择的子串下标为 0 ∼ 5 0\sim5 05,反转后的 n u m n e w = 201012 < 210102 num_{new} = 201012 < 210102 numnew=201012<210102
  6. 所选择的子串下标为 1 ∼ 2 1\sim2 12,反转后的 n u m n e w = 201102 < 210102 num_{new} = 201102 < 210102 numnew=201102<210102
  7. 所选择的子串下标为 1 ∼ 4 1\sim4 14,反转后的 n u m n e w = 201012 < 210102 num_{new} = 201012 < 210102 numnew=201012<210102
  8. 所选择的子串下标为 3 ∼ 4 3\sim4 34,反转后的 n u m n e w = 210012 < 210102 num_{new} = 210012 < 210102 numnew=210012<210102
【评测用例规模与约定】

对于 20 % 20\% 20% 的评测用例, 1 ≤ n ≤ 100 1 \le n \le 100 1n100

对于 40 % 40\% 40% 的评测用例, 1 ≤ n ≤ 1000 1 \le n \le 1000 1n1000

对于所有评测用例, 1 ≤ n ≤ 5000 1 \le n \le 5000 1n5000

考场上打的暴力,没做过区间DP,之后学了发现其实难度不高

/*
赛时只写了个暴力。
正解区间DP
if(s[i] == s[j]) f[i][j] = f[i+1][j-1]
因为从i+1转移过来
所以i要从大到小遍历
*/

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

string s;
bool f[5005][5005];
int sum;

int main()
{
    cin >> s;
    
    for(int i = s.length() - 1; i >= 0; i --) {
        for(int j = i + 1; j <= s.length() - 1; j ++) {
            if(s[i] > s[j]) f[i][j] = 1;
            else if(s[i] < s[j]) f[i][j] = 0;
            else f[i][j] = f[i + 1][j - 1];

            if(f[i][j]) sum ++;
        }
    }

    cout << sum;
    
    return 0;
}

以上是前四道题目,其实如果这四道打满的话已经稳省一了,没打满后面拿点暴力分·也差不多了,,,唉下个月国赛继续图一乐,已经做好明年再战的准备了。。。
后面的题目之后慢慢更新文章来源地址https://www.toymoban.com/news/detail-440467.html

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

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

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

相关文章

  • 第十四届蓝桥杯省赛C++ B组(个人经历 + 题解)

    这是我第一次参加蓝桥杯的省赛,虽然没什么参赛经验,但是自己做了很多前几届蓝桥杯的题,不得不说,这一届蓝桥杯省赛的难度相较于之前而言还是比较大的。之前很流行蓝桥杯就是暴力杯的说法,但是随着参赛人数的增多,比赛认可度的提升,比赛题目的质量也明显越

    2024年02月03日
    浏览(30)
  • 第十四届蓝桥杯省赛c/c++大学B组题解

    个人答案,有错漏感谢指正哈 本题总分:5 分 【问题描述】   小蓝现在有一个长度为 100 的数组,数组中的每个元素的值都在 0 到 9 的范围之内。数组中的元素从左至右如下所示: 5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2 7 0 5 8 8 5 7 0 9 9 1 9 4 4 6 8 6 3

    2023年04月12日
    浏览(39)
  • 2023第十四届蓝桥杯模拟赛第二期个人题解(Java实现)

    2023第十四届蓝桥杯校内模拟赛第三期个人题解(Java实现) 蓝桥杯真题——单词分析(Java实现) 这篇文章为个人题解,假如我写的解法有误,欢迎大家在评论区指正👏👏!!!希望这篇文章对你有帮助❤❤ 请找到一个大于 2022 的最小数,这个数转换成二进制之后,最低的

    2023年04月23日
    浏览(25)
  • 2023第十四届蓝桥杯C/C++B组省赛题解

    题目描述 【问题描述】 小蓝现在有一个长度为100 的数组,数组中的每个元素的值都在0 到9 的范围之内。数组中的元素从左至右如下所示: 现在他想要从这个数组中寻找一些满足以下条件的子序列: 子序列的长度为8; 这个子序列可以按照下标顺序组成一个yyyymmdd 格式的日

    2024年02月04日
    浏览(26)
  • 第十四届蓝桥杯大赛软件赛省赛 Java 大学 B 组题解

    找规律,可以先手动模拟几次,会发现 随着n越大,零也越多,当n为40的时候刚好有9个0 所以到40项以后的末尾9个阶乘的和一定是不变的,可以用手算,也可以写程序 答案是,901327897 代码: Java中有十进制转化为二进制,十六进制,八进制的方法,暴力枚举一下即可。(因为

    2024年02月02日
    浏览(32)
  • 蓝桥杯第十四届省赛完整题解 C/C++ B组

    没有测评,不知道对不对,仅仅过样例而已 本题总分:5 分 【问题描述】 小蓝现在有一个长度为 100 的数组,数组中的每个元素的值都在 0 到 9 的 范围之内。数组中的元素从左至右如下所示: 5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2 7 0 5 8 8 5 7 0 9 9 1 9

    2023年04月13日
    浏览(31)
  • 【蓝桥杯Web】第十四届蓝桥杯(Web 应用开发)模拟赛 2 期 | 精品题解

    🧑‍💼 个人简介:一个不甘平庸的平凡人🍬 🖥️ 蓝桥杯专栏:蓝桥杯题解/感悟 🖥️ TS知识总结:十万字TS知识点总结 👉 你的一键三连是我更新的最大动力❤️! 📢 欢迎私信博主加入前端交流群🌹 第十四届蓝桥杯 Web 应用开发模拟赛第二期昨天正式开始了(本来写的

    2024年02月02日
    浏览(34)
  • 2022 第十四届蓝桥杯模拟赛第二期题目题解(比赛时使用方法)

    目录 第一题:最小的2022 第二题:经过天数 第三题:特殊的十六进制数 第四题:矩阵的最小路径 第五题:质数拆分 第六题:拷贝时间 第七题:单词去重 第八题:最短回文串 第九题:多少个X? 第十题:最小交换 问题描述 请找到一个大于 2022 的最小数,这个数转换成二进

    2023年04月11日
    浏览(43)
  • 2023第十四届蓝桥杯 C/C++大学生A组省赛 满分题解

    以下代码,目前均可通过民间OJ数据(dotcpp New Online Judge), 两个OJ题目互补,能构成全集,可以到对应链接下搜题提交(感谢OJ对题目的支持) 如果发现任何问题,包含但不限于算法思路出错、OJ数据弱算法实际超时、存在没考虑到的边界情况等,请及时联系作者 ​ ​ 洛谷

    2023年04月27日
    浏览(30)
  • 第十四届蓝桥杯大赛软件组省赛 Python大学A组 个人暴力题解

    4.23 update: 省一咯 Powered by: NEFU AB-IN 博主个人的暴力题解,基本很少是正解,求轻喷 题意 思路 模拟即可,本身想用Python自带的datetime库,结果发现年不能开那么大,就直接手写了 代码 题意 思路 DFS爆搜即可 代码 题意 思路 直接没思路,一看到数据范围瞬间怂了,脑子里想的

    2023年04月09日
    浏览(28)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包