C++蓝桥杯填空题(攻克版)
片头
嗨~小伙伴们,咱们继续攻克填空题,先把5分拿到手~

第1题 数位递增的数

这道题,需要我们计算在整数 1 至 n 中有多少个数位递增的数。
什么是数位递增的数呢?一个正整数如果任何一个数位不大于右边相邻的数位。比如:1234是一个数位递增的数;4321则不是。
解题思路:我们可以把1~n个数全部转化为字符串类型。用另外一个字符串类型的变量s来保存。再对当前这个字符串进行排序(排升序)。如果二者相同,那么该数是数位递增的数。
#include <bits/stdc++.h> // 包含所有标准库头文件
using namespace std; // 使用标准命名空间
int main()
{int n;cin >> n; // 从标准输入读取一个整数nint ans = 0; // 初始化计数器ans为0,用于统计符合条件的数字个数for(int i = 1; i <= n; i++) // 遍历从1到n的每个数字{string s = to_string(i); // 将当前数字i转换为字符串形式string s1 = s; // 创建字符串s的副本s1sort(s1.begin(), s1.end()); // 对s1中的字符按升序排序if(s == s1) ans++; // 如果原字符串s与排序后的s1相同,说明数字是升序排列的}cout << ans << endl; // 输出符合条件的数字个数return 0;
}
第2题 数位和

这道题目很简单,将1~1000所有数字的数位和算出来,累加到变量SUM中,就可以了。
#include <iostream>
using namespace std;//求数位和
int get_sum(int x){int temp = x;int sum = 0;while(temp != 0){int r = temp % 10;sum += r;temp /= 10;}return sum;
}int main()
{int SUM = 0;for(int i = 1; i<= 1000; i++){SUM += get_sum(i);}cout << SUM << endl;return 0;
}
第3题 数位比较

这道题,是给定我们区间范围,计算满足数字的数位上的 0 的个数要大于数位上的 1 的个数。
#include <iostream>
using namespace std;int Func(int x)
{int temp = x; // 创建临时变量保存x的值int num1 = 0, num2 = 0; // num1统计0的个数,num2统计1的个数while(temp != 0) { // 循环处理每一位数字if(temp % 10 == 0) num1++; // 如果当前位是0,num1加1if(temp % 10 == 1) num2++; // 如果当前位是1,num2加1temp /= 10; // 去掉已处理的最低位}if(num1 > num2) return 1; // 如果0比1多,返回1else return 0; // 否则返回0
}int main()
{int L, R; // 定义区间端点变量cin >> L >> R; // 输入区间范围[L, R]int ans = 0; // 初始化计数器for(int i = L; i <= R; i++) { // 遍历区间内每个数字if(Func(i) == 1) ans++; // 如果满足条件,计数器加1}cout << ans << endl; // 输出结果return 0;
}
第4题 最小数位和

这道题,虽然数据量比较大,但是我们不要被题目唬住了。
解题思路:①可以定义8行8列的二维数组存储64个数据。
int a[8][8] = {{454771,329157,801601,580793,755604,931703,529875,361797},{604358,529564,574776,821517,195563,688516,223321,607845},{284772,603562,543328,707484,533688,380468,233733,257995},{896582,670074,912386,702393,722092,834842,126346,606526},{376981,910643,413754,945725,817853,651778,350775,676550},{316935,487808,939526,900568,423326,298936,927671,539773},{136326,717022,886675,466684,436470,558644,267231,902422},{743580,857864,529622,320921,595409,486860,951114,558787}};
②题目问我们数位和最小的数,咱们先实现一个求数位和的函数。
//求数位和
int get_sum(int a) {int sum = 0;int temp = a;while (temp != 0) {int r = temp % 10;sum += r;temp /= 10;}return sum;
}
接着我们可以在main函数中调用get_sum函数。
定义变量min,初始值为INT_MAX(需要引用头文件 <climits>,但是 <bits/stdc++.h> 已经包含了)。
从第1行第1列,也就是从第1个元素(a[0][0])开始遍历,依次计算每个数的数位和,保存到变量d中。如果当前的数位和d<min,那么将d赋给min (min = d),同时用另一个变量num保存当前的数。
int min = INT_MAX; // 初始化最小和为最大整数值int num = 0; // 存储数字和最小的那个数int d = 0; // 临时存储数字和// 遍历二维数组for (int i = 0; i < 8; i++) {for (int j = 0; j < 8; j++) {d = get_sum(a[i][j]); // 计算当前数的数字和if (d < min) { // 如果比当前最小值小min = d; // 更新最小值num = a[i][j]; // 更新对应的数}}}
最后输出数位和最小的数
cout << num << endl; // 输出结果
ok,本道题的完整代码如下:
#include <bits/stdc++.h>
using namespace std;//求数位和
int get_sum(int a){int sum = 0;int temp = a;while(temp != 0){int r = temp % 10;sum += r;temp /= 10;}return sum;
}int main()
{int a[8][8] = {{454771,329157,801601,580793,755604,931703,529875,361797},{604358,529564,574776,821517,195563,688516,223321,607845},{284772,603562,543328,707484,533688,380468,233733,257995},{896582,670074,912386,702393,722092,834842,126346,606526},{376981,910643,413754,945725,817853,651778,350775,676550},{316935,487808,939526,900568,423326,298936,927671,539773},{136326,717022,886675,466684,436470,558644,267231,902422},{743580,857864,529622,320921,595409,486860,951114,558787}};int min = INT_MAX; // 初始化最小和为最大整数值int num = 0; // 存储数字和最小的那个数int d = 0; // 临时存储数字和// 遍历二维数组for (int i = 0; i < 8; i++) {for (int j = 0; j < 8; j++) {d = get_sum(a[i][j]); // 计算当前数的数字和if (d < min) { // 如果比当前最小值小min = d; // 更新最小值num = a[i][j]; // 更新对应的数}}}cout << num << endl; // 输出结果return 0;
}
第5题 数位和相等

题目让我们求第23个数位和相等的正整数,数位和相等:一个正整数转化成二进制与转换成八进制后所有数位的数字之和相等。
定义变量count(计数器),表示满足条件的第几个数;定义变量i,初始值为1,从1开始检查数字。
没有给定循环范围,因此我们采用while循环。因为求第23个数位和相等的数,如果count从0开始,那么到22结束;如果count从1开始,那么到23结束。
int i = 1; // 从1开始检查数字int count = 0; // 计数器,记录满足条件的数字个数while(count < 23) //count的取值范围: 0~22,总共23个数{if(S(i)) count++; // 如果i满足条件,计数器加1i++; // 检查下一个数字}
当count==23时,退出while循环。但是此时 i 已经自增,因此需要输出 i-1。
// 注意:此时i已经自增过了,所以要输出i-1cout << i-1 << endl;
接下来我们需要实现S函数,判断1个数的二进制和八进制的数位和是否相同。
int S(int N) {if (N <= 0) return 0; // 处理非正整数int sum2 = 0, sum8 = 0; // sum2存储二进制和,sum8存储八进制和int temp = N; // 临时变量保存N的值//计算二进制各位和while (temp != 0){int r = temp % 2; // 取二进制最后一位sum2 += r; // 累加到sum2temp /= 2; // 去掉已处理的最后一位}temp = N; // 重置temp为原始值//计算八进制各位和while (temp != 0){int ge = temp % 8; // 取八进制最后一位sum8 += ge;temp /= 8;}if (sum2 == sum8) return 1; // 和相等返回1else return 0; // 不等返回0
}
欧克啦,本题的完整代码如下:
#include <iostream>
using namespace std;int S(int N) {if (N <= 0) return 0; // 处理非正整数int sum2 = 0, sum8 = 0; // sum2存储二进制和,sum8存储八进制和int temp = N; // 临时变量保存N的值//计算二进制各位和while (temp != 0){int r = temp % 2; // 取二进制最后一位sum2 += r; // 累加到sum2temp /= 2; // 去掉已处理的最后一位}temp = N; // 重置temp为原始值//计算八进制各位和while (temp != 0){int ge = temp % 8; // 取八进制最后一位sum8 += ge;temp /= 8;}if (sum2 == sum8) return 1; // 和相等返回1else return 0; // 不等返回0
}int main()
{int i = 1; // 从1开始检查数字int count = 0; // 计数器,记录满足条件的数字个数while (count < 23) //count的取值范围: 0~22,总共23个数{if (S(i)) count++; // 如果i满足条件,计数器加1i++; // 检查下一个数字}// 注意:此时i已经自增过了,所以要输出i-1cout << i - 1 << endl;return 0;
}
第6题 数位计数

这道题,很简单。统计1个数一共有多少个数位。n的范围比较大,因此我们可以用 long long 来定义。
#include <iostream>
using namespace std;
typedef long long ll;ll get_count(ll x){ll temp = x;ll count = 0;while(temp != 0){temp = temp / 10;count++; //统计数位个数}return count;
}int main()
{ll n;cin >> n;ll ret = get_count(n);cout << ret << endl;return 0;
}
第7题 数位和

首先,题目给定范围:①质数,因此我们需要实现判断是否为质数的函数; ②计算质数的各个数位之和,判断是否等于23。我们需要实现计算数位和的函数。
判断是否为质数的代码如下:
//判断是否为质数
bool is_prime(int x)
{//这里必须是 i < sqrt(x), 不然编译报错for(int i = 2; i < sqrt(x) ; i++){if(x % i == 0) return 0; //不是质数,返回0}return 1;//只能被 1 和本身整除,是质数,返回1
}
需要额外注意:质数判断应从2开始,且只需检查到即可
计算数位和的函数如下:
//计算数位和
int get_sum(int x)
{int temp = x;int sum = 0;while (temp != 0){int r = temp % 10;sum += r;temp /= 10;}return sum;
}
最后在main函数里面调用这2个函数即可。
//计数器,统计满足条件的数的个数int cnt = 0;for(int i = 3; i <= 1000000; i++){//如果该数为质数并且数位之和为23,计数器+1if(is_prime(i) && get_sum(i) == 23) cnt++; }cout << cnt <<endl; //输出结果
欧克啦,本题完整代码如下:
#include <bits/stdc++.h>
using namespace std;//判断是否为质数
bool is_prime(int x)
{//这里必须是 i < sqrt(x), 不然编译报错for(int i = 2; i < sqrt(x) ; i++){if(x % i == 0) return 0;}return 1;
}//计算数位和
int get_sum(int x)
{int temp = x;int sum = 0;while(temp != 0){int r = temp % 10;sum += r;temp /= 10;}return sum;
}int main()
{//计数器,统计满足条件的数的个数int cnt = 0;for(int i = 3; i <= 1000000; i++){//如果该数为质数并且数位之和为23,计数器+1if(is_prime(i) && get_sum(i) == 23) cnt++; }cout << cnt <<endl; //输出结果return 0;
}
第8题 倍数

这道题很简单,代码如下:
#include <iostream>
using namespace std;
int main()
{int cnt = 0;for(int i = 1; i <= 2020; i++){if(i % 4 == 0 && i % 6 == 0) cnt++;}cout << cnt << endl;return 0;
}
第9题 约数

代码如下:
#include <iostream>
using namespace std;
int main()
{int cnt = 0;for (int i = 1; i <= 2020; i++) {if (2020 % i == 0) cnt++;}cout << cnt << endl;return 0;
}
第10题 公约数

代码如下:
#include <iostream>
using namespace std;
int main()
{int cnt = 0;for (int i = 1; i <= 2020; i++) {if (2020 % i == 0 && 3030 % i == 0) cnt++;}cout << cnt << endl;return 0;
}
第11题 约数个数

代码如下:
#include <iostream>
using namespace std;int main()
{int n = 1200000;int ans = 0;for (int i = 1; i <= n; i++) {if (n % i == 0) ans++;}cout << ans;return 0;
}
片尾
今天我们巩固了填空题基础,希望看完这篇文章对友友们有所帮助!!!
求点赞收藏加关注!!!
谢谢大家!!!

相关文章:
C++蓝桥杯填空题(攻克版)
片头 嗨~小伙伴们,咱们继续攻克填空题,先把5分拿到手~ 第1题 数位递增的数 这道题,需要我们计算在整数 1 至 n 中有多少个数位递增的数。 什么是数位递增的数呢?一个正整数如果任何一个数位不大于右边相邻的数位。比如…...
JS 构造函数实现封装性
通过构造函数实现封装性,构造函数生成的对象独立存在互不影响 创建实例对象时,其中函数的创建会浪费内存...
以太网供电(PoE)交换机:为音频和视频系统赋能的多面利器
近年来,物联网(IoT)视频设备的普及浪潮正以稳健的步伐持续推进。诸如摄像机、支持视频功能的办公自动化系统等物联网视频设备,凭借其远程会议支持、安全性强化以及便捷性提升等诸多优势,赢得了市场的广泛青睐。以太联Intellinet,作…...
《深度剖析分布式软总线:软时钟与时间同步机制探秘》
在分布式系统不断发展的进程中,设备间的协同合作变得愈发紧密和复杂。为了确保各个设备在协同工作时能够有条不紊地进行,就像一场精准的交响乐演出,每个乐器都要在正确的时间奏响音符,分布式软总线中的软时钟与时间同步机制应运而…...
一站式云分账系统!智能虚拟户分账系统成电商合规“刚需”
电商智能分账解决:电商一站式破解多平台资金管理难题集中管理分账,分账后秒到,并为针对电商行业三大核心痛点提供高效应对策略: 1. 票据合规困境 智能对接上下游交易数据流,构建自动化票据协同机制,有效规…...
服务器加空间失败 growpart /dev/vda 1
[rootecm-2c5 ~]# growpart /dev/vda 1 unexpected output in sfdisk --version [sfdisk,来自 util-linux 2.23.2] [rootecm-2c5 ~]# xfs_info /dev/vda1 meta-data/dev/vda1 isize512 agcount21, agsize1310656 blks sectsz512 attr2, projid32bit1 crc1 finobt0…...
慢查询解决思路
1. 复现问题 慢查询的出现是常态还是偶尔?是否在业务允许范围内? "不要过早优化,先 Make it work / right,再 Make it fast。" 建议先将查询语句及其触发条件记录下来,便于后续测试、分析和对比。 2. 定位问题 2.1 单机数据库: explain查询执行计划 数据库默…...
数组 array
1、数组定义 是一种用于存储多个相同类型数据的存储模型。 2、数组格式 (1)数据类型[ ] 变量名(比较常见这种格式) 例如: int [ ] arr0,定义了一个int类型的数组,数组名是arr0; &am…...
linux命令六
逻辑卷 作用: 整合分散空间 空间支持扩大 步骤一:建立卷组(VG) 格式:vgcreate 卷组名 设备路径……. 如果分区不是卷组,则会先调用pvcreat 组建物理卷,再将其组建成组卷 Successfully:成功 example:例子 在man帮助中可以使用examp…...
深度学习总结(8)
模型工作流程 模型由许多层链接在一起组成,并将输入数据映射为预测值。随后,损失函数将这些预测值与目标值进行比较,得到一个损失值,用于衡量模型预测值与预期结果之间的匹配程度。优化器将利用这个损失值来更新模型权重。 下面是…...
基于docker搭建redis集群环境
在redis目录下创建redis-cluster目录,创建docker-compose.yml文化和generate.sh文件 【配置generate.sh文件】 for port in $(seq 1 9); \ do \ mkdir -p redis${port}/ touch redis${port}/redis.conf cat << EOF > redis${port}/redis.conf port 6379 …...
OpenHarmony 5.0版本视频硬件编解码适配
一、简介 Codec HDI(Hardware Device Interface)对上层媒体服务提供视频编解码的驱动能力接口,主要功能有获取组件编解码能力,创建、销毁编解码器对象,启停编解码器操作,编解码处理等。 Codec HDI 2.0接口…...
deepseek热度已过?
DeepSeek的热度并没有消退,以下是具体表现: 用户使用量和下载量方面 • 日活跃用户量增长:DeepSeek已经成为目前最快突破3000万日活跃用户量的应用程序。 • 应用商店下载量:1月26日,DeepSeek最新推出的AI聊天机器人…...
分治-归并系列一>翻转对
目录 题目:解析:策略一: 代码:策略二: 代码: 题目: 链接: link 这题和逆序对区别点就是,要找到前一个元素是后一个元素的2倍 先找到目标值再,继续堆排序 解析࿱…...
FFMPEG大文件视频分割传输教程,微信不支持1G文件以上
如下是一个2.77g的文件分割教程 . 前言 FFmpeg 是一个用于处理视频、音频等多媒体文件的开源工具包。它支持几乎所有的多媒体格式转换、剪辑和编辑,是开发者和多媒体工作者必备的工具。本文详细讲解如何在 Windows 系统上安装 FFmpeg 并进行基本配置。 2. 下载 FF…...
从数据海洋中“淘金”——数据挖掘的魔法与实践
从数据海洋中“淘金”——数据挖掘的魔法与实践 在这个数据飞速膨胀的时代,每天产生的数据量可以用“天文数字”来形容。如果将数据比作金矿,那么数据挖掘(Data Mining)就是在数据的海洋中挖掘黄金的技术。作为一门结合统计学、机…...
elestio memos SSRF漏洞复现(CVE-2025-22952)(附脚本)
免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 前言…...
MySQL5.7数据库部署和安装
1. 准备系统环境 Vmawre安装CentOS7 略… 2. 下载MySQL5.7安装包 下载地址: https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz 3. 卸载系统自带的MariaDB sudo yum remove $(rpm -qa | grep mariadb)4. 解压安…...
力扣第272场周赛
周赛链接:竞赛 - 力扣(LeetCode)全球极客挚爱的技术成长平台 这场周赛是在课堂上模拟的, 总体来说比较简单, 但不幸被老师压力了。以下分享一下我的解题思路 如果你每天没有时间刷题的话, 可以看一下我写的东西, 我尽量讲解的通俗一些, 不会…...
Java学习手册:JVM、JRE和JDK的关系
在Java生态系统中,JVM(Java虚拟机)、JRE(Java运行时环境)和JDK(Java开发工具包)是三个核心概念。它们共同构成了Java语言运行和开发的基础。理解它们之间的关系对于Java开发者来说至关重要。本文…...
C++中作用域(public,private,protected
在C中,public、private 和 protected 是用于控制类成员(变量和函数)访问权限的关键字。它们决定了类成员在代码中的可见性和可访问性。在学习时候,对于public是最容易理解的,对于private也好理解,但是对于p…...
如何用 esProc 实现 Oracle 和 MySQL 的混合运算
逻辑数仓可以实现多源混算,但需要配置视图、预处理数据,结构太沉重。duckdb 是轻量级的方案,但没有内置 Oracle 的 connector,自己开发难度又太高。同为轻量级方案,esProc 支持 JDBC 公共接口,可以实现任何…...
题目 2701: 蓝桥杯2022年第十三届决赛真题-取模(C/C++/Java组)
题目 2701: 蓝桥杯2022年第十三届决赛真题-取模(C/C/Java组) 时间限制: 3s 内存限制: 512MB 提交: 6633 解决: 1263 题目描述 给定 n, m ,问是否存在两个不同的数 x, y 使得 1 ≤ x < y ≤ m 且 n mod x n mod y 。 输入格式 输入包含多…...
FreeRTOS 中 SVC与SysTick以及PendSV 优先级配置
在FreeRTOS中,针对ARM Cortex-M架构,SVC、SysTick和PendSV的优先级配置需遵循以下原则以确保系统高效运行: 优先级配置详解 优先级规则 数值越低,优先级越高(Cortex-M默认设定)。硬件中断(如DMA、UART)通常配置为最高优先级(数值0~4),确保实时性。系统异常(SVC、S…...
Linux 第二讲 --- 基础指令(二)
前言 这是基础指令的第二部分,但是该部分的讲解会大量使用到基础指令(一)的内容,为了大家的观感,如果对Linux的一些基本指令不了解的话,可以先看基础指令(一),同样的本文…...
Python中的数值运算函数及math库详解
文章目录 Python中的数值运算函数及math库详解一、内置数值运算函数1. 基本数值运算函数2. 类型转换函数3. 进制转换函数 二、math库中的数学常数三、math库常用数学函数1. 数论与表示函数2. 幂函数与对数函数3. 三角函数4. 角度转换5. 双曲函数6. 特殊函数 四、实际应用示例1.…...
P8627 [蓝桥杯 2015 省 A] 饮料换购
题目描述 思路 一是可以多枚举几个数,找找规律 二可以模拟 代码 #include<bits/stdc.h> #define int long long using namespace std;const int N 2e510;int a[N]; int b[N]; //前缀和 signed main() {int n;cin >> n; //表示初始的饮料盖int ans …...
《Vue Router实战教程》12.不同的历史记录模式
欢迎观看《Vue Router 实战(第4版)》视频课程 不同的历史记录模式 在创建路由器实例时,history 配置允许我们在不同的历史模式中进行选择。 Hash 模式 hash 模式是用 createWebHashHistory() 创建的: import { createRouter,…...
第十五届蓝桥杯大赛软件赛省赛Python 大学 B 组试做(下)【本期题单: 缴纳过路费, 纯职业小组】
本期题单:缴纳过路费,纯职业小队 文章目录 缴纳过路费题目思路分析代码 纯职业小组题目思路分析 感谢大伙观看,别忘了三连支持一下大家也可以关注一下我的其它专栏,同样精彩喔~下期见咯~ 缴纳过路费 题目 题目链接:缴…...
数字政府网络架构建设方案
数字政府网络架构建设方案 一、引言 随着信息技术的快速发展,数字政府建设已成为提升政府治理能力和服务水平的关键。网络架构作为数字政府的核心基础设施,对于保障数据安全、提高服务效率、促进信息共享具有重要意义。本方案旨在为数字政府网络架构建…...
