大一新生备战蓝桥杯c/c++B组——2024年省赛真题解题+心得分享

devtools/2025/3/14 23:14:50/

一,握手问题

这个题用点像小学奥数,直接手算就行

答案:1204

二,小球反弹

这个题思路简单,但是运行会显示超时。在思考思考,后续补代码。

三,好数

思路一: 

#include <iostream>
using namespace std;bool isGoodNumber(int n) {for(int i = 1; n > 0; i++) // 从最低位开始,i表示当前是第几位,i++位数加1{int digit = n % 10;  // 取出当前位的数字if ((i % 2 == 1 && digit % 2 != 1) || (i % 2 == 0 && digit % 2 != 0)) {return false;  // 如果当前位不满足条件,返回false}n = n / 10;  // 去掉最低位// 位数加1}return true;  // 所有位都满足条件,返回true
}int main() {int N;cin >> N;int count = 0;for (int n = 1; n <= N; n++) {if (isGoodNumber(n)) {count++;  // 如果是好数,计数器加1}}cout << count;return 0;
}

思路二:

#include <iostream>
using namespace std;int main() {int N;cin >> N;int count = 0;  // 记录“好数”的数量for (int n = 1; n <= N; n++) {int temp = n;  // 使用临时变量,避免修改外层循环的 nbool isGood = true;  // 假设当前数字是“好数”int i = 1;  // 位数计数器,从最低位开始while (temp > 0) {int digit = temp % 10;  // 取出当前位的数字// 检查当前位是否满足条件if ((i % 2 == 1 && digit % 2 != 1) || (i % 2 == 0 && digit % 2 != 0)) {isGood = false;  // 如果某一位不满足条件,标记为不是“好数”break;  // 跳出内层循环}temp = temp / 10;  // 去掉最低位i++;  // 位数加1}if (isGood) {count++;  // 如果当前数字是“好数”,计数器加1}}cout << count;  // 输出“好数”的数量return 0;
}

解释代码 

  1. 临时变量 temp

    • 在内层循环中,使用 temp 来保存当前正在检查的数字,避免修改外层循环的 n

  2. 标志变量 isGood

    • 初始值为 true,假设当前数字是“好数”。

    • 如果某一位不满足条件,将 isGood 设置为 false 并跳出内层循环。

  3. 位数计数器 i

    • 从最低位开始,逐位检查数字的每一位是否满足“好数”的条件。

  4. 条件判断

    • 如果当前位是奇数位(i % 2 == 1),则检查数字是否为奇数(digit % 2 == 1)。

    • 如果当前位是偶数位(i % 2 == 0),则检查数字是否为偶数(digit % 2 == 0)。

  5. 计数

    • 如果当前数字是“好数”,则增加计数器 count

四,R格式

思路:

#include <iostream>   // 用于输入输出操作
#include <cmath>      // 提供pow()和round()数学函数
using namespace std;int main() {int n;            // 转换参数n,必须是整数double d;         // 待转换的浮点数d,题目保证d>0// 输入处理:按顺序读取整数n和浮点数dcin >> n >> d;    // 示例输入:3 9.14// 计算 d * 2^n(使用pow函数计算2的n次方)double m = d * pow(2, n); // 示例计算:9.14 * 8 = 73.12// 四舍五入到最近的整数,使用long long避免溢出long long ans = round(m); // 示例结果:round(73.12) = 73// 输出最终结果cout << ans << endl; // 正确输出应为整数73return 0;
}

这个代码只通过了50%,我还没找到问题出在哪。

补充:C++数学库常用函数

  1. 绝对值函数用abs()函数实现
  2. 四舍五入操作用round()函数实现
  3. 计算平方根用sqrt()函数实现
  4. 计算幂次方用pow()函数实现

五,宝石组合

 

#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;const int N = 1e5 + 1; //定义一个常数 N,,表示数组大小的上线为100001
int s[N]; //定义整数数组s,用于存储输入的宝石的闪亮度
int n; //存储宝石的数量
vector<int> d[N]; int main() {cin >> n;
//遍历0到n-1,读取宝石的闪亮度,存储到数组s中for (int i = 0; i < n; i++) {cin >> s[i];}sort(s, s + n);//对数组s中的宝石闪亮度进行升序排序
//找出数组s中每个元素的约数,将具有相同约数的数组元素vector数组 d中for (int i = 0; i < n; i++) {for (int j = 1; j <= sqrt(s[i]); j++) {if (s[i] % j == 0) {d[j].push_back(s[i]);if (s[i] / j != j) {d[s[i] / j].push_back(s[i]);}}}}
//在存储具有相同约数的宝石闪亮度的vector数组d中,寻找第一个元素个数大于等于3的for (int i = N - 1; i >= 0; i--) {if (d[i].size() >= 3) {cout << d[i][0];for (int j = 1; j < 3; j++) {cout << " " << d[i][j];}break;}}return 0;
}

 

六,数字接龙

这道题主要用到矩阵,我还没学,这周会继续补充。 

七,爬山

八,拔河

最后两题有一点思路,但没办法完全写出来,后续会补。 


http://www.ppmy.cn/devtools/167137.html

相关文章

ChromeOS 133 版本更新

ChromeOS 133 版本更新 1. 增强托管用户的 Office 文件处理功能 从 ChromeOS 133 开始&#xff0c;托管用户 现在可以 无缝打开和编辑 Microsoft Office 文件&#xff08;Word、PowerPoint、Excel&#xff09;&#xff0c;无论他们使用的是 Microsoft 365&#xff08;Office …

踩坑故障实录 自学软硬件工程师第750天

见字如面&#xff0c; 这里是AIGC创意人_竹相左边 我很喜欢 《流浪地球 2》中 &#xff0c;马兆&#xff1a;没有硬件支撑&#xff0c;你破解个屁。 --- 故障描述 昨天在服务器ess当中部署自己的网页计时器。代码都交给通义灵码。给的代码我并不能全部看懂。 今天我想继续…

Java Socket通信基础及拆包粘包问题模拟(上)

一、Socket通信基础概念 1.1 什么是Socket&#xff1f; Socket&#xff08;套接字&#xff09;是计算机网络中不同主机间进程进行双向通信的端点&#xff0c;本质是操作系统提供的进程间通信机制。它封装了TCP/IP协议栈的复杂操作&#xff0c;为应用程序提供了标准API。 1.2…

Redis 缓存穿透、缓存击穿与缓存雪崩详解:问题、解决方案与最佳实践

目录 引言 1. 缓存穿透 1.1 什么是缓存穿透&#xff1f; 示例&#xff1a; 1.2 缓存穿透的原因 1.3 缓存穿透的解决方案 1.3.1 缓存空对象 1.3.2 布隆过滤器&#xff08;Bloom Filter&#xff09; 1.3.3 参数校验 2. 缓存击穿 2.1 什么是缓存击穿&#xff1f; 示例&…

Docker基础命令说明

Docker基础操作命令众多&#xff0c;这些命令可以按如下方式进行分类&#xff1a; 镜像操作容器操作网络操作数据卷操作LOG查询 等方面进行分类。 一、镜像操作命令 docker images&#xff1a;用于列出本地系统中所有的 Docker 镜像。镜像就像是一个模板&#xff0c;它包含…

vue中,watch里,this为undefined的两种解决办法

提示&#xff1a;vue中&#xff0c;watch里&#xff0c;this为undefined的两种解决办法 文章目录 [TOC](文章目录) 前言一、问题二、方法1——使用function函数代替箭头函数()>{}三、方法2——使用that总结 前言 ‌‌‌‌‌尽量使用方法1——使用function函数代替箭头函数()…

TCP/IP原理详细解析

前言 TCP/IP是一种面向连接&#xff0c;可靠的传输&#xff0c;传输数据大小无限制的。通常情况下&#xff0c;系统与系统之间的http连接需要三次握手和四次挥手&#xff0c;这个执行过程会产生等待时间。这方面在日常开发时需要注意一下。 TCP/IP 是互联网的核心协议族&…

第13章贪心算法

贪心算法 局部最优求得总体最优 适用于桌上有6张纸币&#xff0c;面额为100 100 50 50 50 10&#xff0c;问怎么能拿走3张纸币&#xff0c;总面额最大&#xff1f;—拿单位价值最高的 只关注局部最优----关注拿一张的最大值拆解-----拿三次最大的纸币 不适用于桌面三件物品&am…