第十四届蓝桥杯大赛软件赛CB国赛-填空题(题目解析+完整代码)

ADS新手必看:用Filter DesignGuide快速搞定一个4GHz LC低通滤波器(附保姆级避坑指南) 本文为ADS新手提供了4GHz LC低通滤波器的完整设计流程,重点介绍了如何使用Filter DesignGuide避免参数设置陷阱、正确解读仿真结果以及解决实际电路与理论值的偏差问题。通过真实工程案例,详细讲解了工程创建、Filter DesignGuide配置、电路优化、仿真设置及实际工程中的进阶技巧,帮助工程师快速掌握LC滤波器设计。 阅读详情

前言

考完蓝桥杯了以后一直在咕咕咕, 所以题解直到现在才写出来()

欢迎访问我的个人博客!

第一题

题目描述

小蓝在黑板上连续写下从 1 到 2023 之间所有的整数,得到了一个数字序列:

S = 12345678910111213 . . . 20222023。

小蓝想知道 S 中有多少种子序列恰好等于 2023?

提示,以下是 3 种满足条件的子序列(用中括号标识出的数字是子序列包含的数字):

1[2]34567891[0]111[2]1[3]14151617181920212223...
1[2]34567891[0]111[2]131415161718192021222[3]...
1[2]34567891[0]111213141516171819[2]021222[3]...

注意以下是不满足条件的子序列,虽然包含了 2、0、2、3 四个数字,但是顺序不对:

1[2]345678910111[2]131415161718192[0]21222[3]...

题目思路

这个题目问的是一个字符串的字串有多少个。首先我们要先开一个可以装下这一整个序列的数组。假设我们这个串的长度是 S S S。

由于这个串由 1 , 2 , . . . , 2023 1,2, ... ,2023 1,2,...,2023 组成所以一共有 2023 个数字。每个数字最多占用 4 个字符,所以 S < 2023 ∗ 4 < 100000 S < 2023*4 < 100000 S<2023∗4<100000。由此,我们只需要开 100000 即可将下整个字符串。

到了这一步,就已经可以写出来一个暴力算法了,不过我们在实际的运行中可以看到,这个时间复杂度太高了,我们没法承担,所以我们接下来应该开始优化这个代码。

我们来看这个字符串:

2025343

里面一共有两个子串:

[2][0][2]5[3]43
[2][0][2]534[3]

我们可以发现一个特点:这两个字符串的前缀是一样的,同时,子串的数量恰好等于以第二个 2 开始,到结尾中,3 的个数!

因此我们就有了以下的优化思路:我们可以开一个数组 cnt,这个数组记录以第 i 个字符开始,到结尾的 3 的个数。这样我们在深度优化遍历的时候,只需要遍历前 3 个字符,不需要遍历第 4 个字符。这样,时间复杂度就显著的降低了。

代码

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 1e5 + 10;

string a;
// 第i个字符开始,往后3的个数
int cnt[N];
// 一定要开long long,会爆int。我当时考试的时候忘记开了,后悔死了。
long long res = 0;

// 应该遍历的字符,当前应该查找的字符的编号
void dfs(int u, int t) {
	if (t == 4) {
		// 以u个字符为前缀,符合目标串的个数
		res += cnt[u];
		return ;
	}
	 
	for (int i = u; i < a.size(); i ++) {
		if (t == 1) {
			if (a[i] == '2') {
				dfs(i + 1, t + 1);
			}
		} else if (t == 2) {
			if (a[i] == '0') {
				dfs(i + 1, t + 1);
			}
		} else if (t == 3) {
			if (a[i] == '2') {
				dfs(i + 1, t + 1);
			}
		}
	}
}

int main () {
	// 我们以下标1为开始,所以先用0填一下
	a.push_back('0');
	for (int i = 1; i <= 2023; i ++) {
		// 构造子串
		a += to_string(i);
	}
	// 构造cnt数组 
	for (int i = a.size() - 1; i; i --) {
		if (a[i] == '3') {
			cnt[i] += 1;
		}
		cnt[i] += cnt[i + 1];
	}
	
	dfs(1, 1);
	
	cout << res << endl;
	
	return 0;
}

答案

5484660609

第二题

这题不确定,没有找到和我同一个答案的人。

题目描述

若一个正整数 x x x 可以被表示为 p 2 × q 2 p^{2} × q^{2} p2×q2,其中 p p p、 q q q 为质数且 p p p , q q q,则 x x x 是一个 “双子数”。请计算区间 [ 2333 , 23333333333333 ] [2333, 23333333333333] [2333,23333333333333] 内有多少个 “双子数”?

题目分析

这里要用到质数,那么我们首先需要求出所以的质数。这里使用线性筛法来求质数。那么应该开到多大呢?可以知道 p p p 和 q q q 是两个不相同的质数,那么可以假设 p > q p > q p>q,则 p 2 ∗ q 2 < p 4 p^{2} * q^{2} < p^{4} p2∗q2<p4。因此,我们只需要求到 23333333333333 4 \sqrt[4]{23333333333333} 423333333333333 ​ 的下一个质数即可。

我们可以先用算法求出从 2 2 2 开始到 s q r t ( 23333333333333 ) sqrt(23333333333333) sqrt(23333333333333) 内所以的质数,然后输出其个数,可以得到:337413。然后,由于是填空题,所以两重 for 循环就可以求出所以的对数。同时,时间复杂度也在可以接受的范围内。

这里还有两个注意的点:1. p 和 q 不相等。2. p 和 q 的顺序无关,即 (2, 3)和 (3, 2)是同一对。

代码

#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>

using namespace std;

const int N = 1e7 + 10;

typedef long long LL;

LL primes[N];
bool st[N];
int cnt;

double minv = 2333;
double maxv = 23333333333333;

long long ans = 0;

void get_primes(LL n) {
    for (int i = 2; i <= n; i++)
    {
        if (!st[i]) primes[cnt++] = i;
        for (int j = 0; primes[j] <= n / i; j++)
        {
            st[primes[j] * i] = true;
            if (i % primes[j] == 0) break;
        }
    }
}

int main() {
    get_primes(sqrt(23333333333333));
    // p
    for (int i = 0; (double)primes[i] <= maxv / primes[i] && i < cnt; i++) {
        // q^2的值
        double res = maxv / primes[i] / primes[i];
        // q
        for (int j = 0; j < i; j++) {
            // 判断相乘要小于最大值
            if (double(primes[j]) <= res / primes[j]) {
                // 这样就可以确保在最大值的范围内,接下来要判断最小值。
                if ((double)primes[i] * primes[i] * primes[j] * primes[j] - minv > 1e-6) {
                    // double类型的判断相等时,应该使用相减
                    // a >= b  ===> a - b >= 0 == 1e-6
                    ans++;
                }
            }
            else {
                break;
            }

        }
    }

    cout << ans << endl;

    return 0;
}

答案

947293
华为的LTC(Lead to Cash,从线索到现金)流程是其销售管理体系的核心,覆盖了从发现销售线索到最终收回现金的全过程,强调端到端的业务贯通和以客户为中心的运营理念 华为LTC流程是覆盖销售全周期的管理体系,包含四大阶段:线索转机会(LTO)、机会转订单(OTO)、订单转交付(OTD)、交付转现金(DTC)。其核心采用"铁三角"团队模式(AR/SR/FR协作),通过多部门联合评审把控关键节点,实现端到端业务贯通。该流程与IPD、MTL、ITR等体系高效协同,结合iSales平台实现数字化管理,有效提升销售效率、客户满意度和资金回笼速度。 阅读详情

相关推荐

鼎捷T100二次开发实战:如何给开窗功能加上权限锁(附完整代码)

本文详细解析了鼎捷T100二次开发中开窗功能权限锁的实现方法,提供了两种技术方案:开窗程序重构法和动态WHERE条件注入法,并附上完整代码示例。通过真实案例,帮助开发者解决数据权限细粒度控制的难题,提升ERP系统的安全性和实用性。

weixin_28454475的博客 443

【比赛】第十四届蓝桥杯大赛软件赛决赛 C/C++ 大学 B 组(比赛过程记录,不是答案总结,待更新,文末查询蓝桥杯相关信息)

今天打得有点蒙,感觉状态不太好,后面再补吧,今天就写到这。喜提国二

想要AC的sjh的博客空间 2001

立创星火计划:基于STM32H743VIH6的Maverick_H743_MK1.0高性能开源飞控硬件全解析

本文详细解析了基于STM32H743VIH6核心的Maverick_H743_MK1.0高性能开源飞控硬件设计。重点阐述了采用双IMU冗余设计、高精度气压计、多路独立电源管理以及丰富接口(如CAN总线)的考量,旨在为穿越机、科研无人机等平台提供强大、可靠的飞行控制解决方案。

weixin_28787801的博客 200

2023第十四届蓝桥杯国赛 C/C++ 大学 B 组

long long 开不下prime[i]*prime[i]*prime[j]*prime[j] 错误结果是 947293。当遇到字符 ‘2’ 的时候字符串 “2” 的数量+1,字符串 “202” 的数量加上字符串 “20” 的数量。当遇到字符 ‘3’ 的时候字符串 “2023” 的数量加上字符串 “202” 的数量。当遇到字符 ‘0’ 的时候字符串 “20” 的数量加上字符串 “2” 的数量。暴力枚举 +剪枝 (考试的时候怎么就没敢做哪?最后 “2023” 的数量就是答案。要用__int128。

qq_63841467的博客 5324

玩转Matlab-Simscape(初级)-01-从一个简单模型开始学习之旅

本文从初学者的角度分享的关于Matlab simscape 的基础内容,简单分享了Simscape搭建模型,创建子系统,修改定义参数等内容,为将来深入学习和使用simscape做铺垫。

万金油笑匠的博客 6524

手把手教你解决Kernel panic报错:init找不到的5种排查方法(附NFS挂载实战)

本文深入解析了Linux系统启动时出现“Kernel panic - not syncing: No working init found”报错的根本原因,并提供了五种系统性的排查方法。文章结合NFS挂载根文件系统的实战场景,详细阐述了从动态链接库依赖、内核引导参数、NFS权限配置、文件系统完整性到内核配置干扰的完整排查路径,帮助开发者快速定位并解决这一常见的系统启动故障。

weixin_29159995的博客 196

蓝桥杯填空题汇总

蓝桥杯填空题汇总例1:乘积尾零如下的 10 行数据,每行有 10 个整数,请你求出它们的乘积的末尾有多少个零?

m0_51664084的博客 1058

CS231n+assignment2(一)

cs231n作业二详解+代码

qq_56551150的博客 2411

2023第十四届蓝桥杯国赛 C/C++ 大学 B 组 (赛后记录)

蓝桥杯国赛赛后总结

Ljx的博客 6288

window下安装并使用nvm(含卸载node、卸载nvm、全局安装npm)

文章目录一、卸载node二、安装nvm三、配置路径和下载源四、使用nvm安装node五、nvm常用命令六、卸载nvm七、遇到的问题 nvm 全名 node.js version management,顾名思义是一个nodejs的版本管理工具。通过它可以安装和切换不同版本的nodejs。 一、卸载node 如果你已经安装了node,那么你需要先卸载node,如果你没有安装那直接跳过这一步到下一步。 打开控制面板 -> 打开程序和功能 -> 右上角搜索输入node -> 右键卸载 为了确保彻底

HuangsTing的博客 41万+

什么是 SAPGUI 里的 Logon Group/Server

这意味着,不同的用户连接可以被分配到不同的应用服务器,以实现均衡的资源利用和降低某一服务器的负载压力。在这种配置下,欧洲的用户登录时选择“EUROPE_GROUP”,系统将自动选择一个位于欧洲的数据中心的服务器进行连接,这样不仅减少了网络延迟,还实现了服务器间的负载均衡。用户在 SAPGUI 中登录时,只需选择相应的 Logon Group(例如“FIN_GROUP”),系统就会自动将他们的连接请求分配到当前负载最小的应用服务器上,这种动态分配大大提升了系统的响应速度和稳定性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1069

第十四届蓝桥杯大赛软件赛决赛 C/C++ 大学 B 组 试题 B: 双子数

若一个正整数 $x$ 可以被表示为 $p^2 \times q^2$,其中 $p$、$q$ 为质数且 $p \neq q$,则 $x$ 是 一个 “双子数”。请计算区间 $[2333, 23333333333333]$ 内有多少个 “双子数”?

00后的博客 1034

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

2025年第十六届蓝桥杯国赛CB组题解(个人版

前言:该篇题解并非官方题解,是我当时AC了部分题的以及赛后补题后,对于每道题的一些解法的自我认知,一方面是巩固自己对大赛知识的理解,另一方面也是为了给其他像我一样的蒟蒻清晰的解释。(为什么只有5道题呢,因为后面的题目有点难,蒟蒻还没补完T_T,不过会尽快的题目描述:有2025个连续的格子,每个格子都可以填入一个数字,求有多少个序列,使得任意两个相邻格子中的数字,其最小公倍数(LCM)均为 2025。并将结果对 10910^9109+7取模。解法:由于2025可以分解为 34∗523^4*5^234∗52 ,

2403_88284978的博客 3243

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

第十三届蓝桥杯大赛软件赛省赛(Java 大学B组)

第十三届蓝桥杯大赛软件赛省赛 Java 大学 B 组

NOW I GOT ONE WAY 6411

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【第16届蓝桥杯软件赛】CB组省赛第一场

期待您的一键三连!欢迎指正!

Guiat的博客 1144

第十四届蓝桥杯大赛软件赛省赛-CB试题

第十四届蓝桥杯大赛软件赛省赛-CB试题 去发现同类优质开源项目:https://gitcode.com/ 本仓库提供了一个重要的学习资源——《第十四届蓝桥杯大赛软件赛省赛-CB.pdf》。该文件包含了2023第十四届蓝桥杯C/C++ B组的试题,适用于参赛选手及编程爱好者学习和参考。 该资源文件详细记录了比赛的题目内容,有助于提高编程技能和解决实际问题的能力。希望这份资料能够对您在编程学习道路上有...

gitblog_06755的博客 251

2022年6月第十三届蓝桥杯大赛软件赛全国决赛C++A组题解

目录 比赛成绩与复盘 试题 A: 小蓝与钥匙 试题 B: 排列距离 试题 C: 内存空间 试题 D: 最大公约数 试题 E: owo 试题 F: 环境治理 试题 G: 选素数 试题 H: 替换字符 试题 I: 三角序列 试题 J: 括号序列树

陈颜的博客 1万+

蓝桥杯国赛CB组备赛指南:从算法基础到实战策略的深度复盘

算法竞赛是检验编程能力与计算思维的重要途径,其核心在于运用数据结构与算法高效解决复杂问题。理解动态规划、深度优先搜索等经典算法的原理,掌握时间与空间复杂度的分析方法,是提升解题能力的基础。这些技术能力不仅在竞赛中至关重要,更能培养工程实践中的性能优化意识与系统建模思维。对于参加蓝桥杯等国家级赛事的学生而言,针对国赛CB组级别的系统备赛,需要构建扎实的知识体系,并进行有效的真题训练与策略调整。本文基于往届参赛者的实战经验,提炼出备赛的核心要点与常见误区,重点探讨如何将算法思维转化为解决实际问题的能力,并融入对

weixin_30225755的博客 256

12届蓝桥杯软件类省赛第一场_CB

第一次参加蓝桥杯省赛,补题写博客留个纪念~ 大题所附代码均在 AcWing 上提交通过。

qq_44729222的博客 953

第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(真题/代码)

在岛屿 A 所占据的格子中,如果可以从中选出 k 个不同的格子,使得他们的坐标能够组成一个这样的排列:(x0, y0),(x1, y1), . . . ,(xk−1, yk−1),其中(x(i+1)%k, y(i+1)%k) 是由 (xi, yi) 通过上/下/左/右移动一次得来的 (0 ≤ i ≤ k − 1),此时这 k 个格子就构成了一个 “环”。若 B 是 A 的子。现在给定一个长度为 N 的数列 A1, A2, . . . , AN,请你计算最少从中删除多少个数,可以使剩下的序列是接龙序列?

2301_80956920的博客 2443

【第十五届蓝桥杯大赛软件赛省赛】———— C/C++ 大学B组

蓝桥杯2024年15届省赛b组原题献上

机会是给有准备的人 2218

岛屿个数(bfs)第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组第六题

(xk−1​,yk−1​),其中 (xi+1modk,yi+1modk)(xi+1modk​,yi+1modk​) 是由 (xi,yi)(xi​,yi​) 通过上/下/左/右移动一次得来的 (0≤i≤k−1)(0≤i≤k−1),此时这 kk 个格子就构成了一个“环”。小蓝得到了一副大小为 M×NM×N 的格子地图,可以将其视作一个只包含字符 '0'(代表海水)和 '1'(代表陆地)的二维数组,地图之外可以视作全部是海水,每个岛屿由在上/下/左/右四个方向上相邻的 '1' 相连接而形成。

2301_80155689的博客 336

第十六届蓝桥杯大赛软件赛决赛_CB(个人部分题解)

就是拼接算串,s[i-2]+s[i-1],算满足条件的数, 还是类似单个串,s[i-1]中j为0的个数乘以s[i-2]中1的个数,再加起来s[i-1]和s[i-2]串本来就有的。直到==1,如果获取到二进制的最高位的数==n再取膜会死循环,以及最高为的1是0次方的(或不存在)就是无解。先分析下当前串,到j位置s[j]=='0',之前1的个数,全加起来就行,可以做个类似前缀和,或者贡献。如1,2,3,4,->3,4,1,2,是个环形的,取膜n。发现旋转1次,是指针1右移1个单位。第二题他不能重复不会。

2302_76925655的博客 402

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

第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组,试题 A: 日期统计 .本题总分:5 分 试题 B: 01 串的熵.本题总分:5 分 试题 C: 冶炼金属.本题总分:10分 试题 D: 飞机降落.本题总分:10分 试题 E: 接龙数列.本题总分:15分 试题 F: 岛屿个数.本题总分:15分 试题 G: 子串简写.本题总分:20分 试题 H: 整数删除.本题总分:20分 试题 I: 景区导游 .本题总分:25分 试题 J: 砍树 .本题总分:25分

qq_52760486的博客 2020

第十二届蓝桥杯省赛C++B组

微云文件分享:第十二届蓝桥杯大赛软件赛省赛_CB.pdf下载地址:https://share.weiyun.com/5XIDMDmi文件大小:146.7K

qq_43640212的博客 884

第十五届蓝桥杯C/C++B组题解

第十五届蓝桥杯大赛软件类省赛C/C++大学B组。

专注于AI领域前沿知识,业余爱好开发软件 1564
上一篇: 第十四届蓝桥杯大赛软件赛省赛-试题 B---01 串的熵 解题思路+完整代码
下一篇: 在windows环境中使用vcpkg+cmake完成类linux的c++开发环境配置
ghost_him
博客等级 码龄6年 598粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值