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

news/2025/3/20 6:26:06/

好数

题目来源

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

原题链接

蓝桥杯 好数

问题描述

P10424 [蓝桥杯 2024 省 B] 好数

题目描述

一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位……)上的数字是奇数,偶数位(十位、千位、十万位……)上的数字是偶数,我们就称之为“好数”。

给定一个正整数 N N N,请计算从 1 1 1 N N N 一共有多少个好数。

输入格式

一个整数 N N N

输出格式

一个整数代表答案。

输入输出样例 #1

输入 #1

24

输出 #1

7

输入输出样例 #2

输入 #2

2024

输出 #2

150

说明/提示

样例 1 解释

24 24 24 以内的好数有 1 , 3 , 5 , 7 , 9 , 21 , 23 1,3,5,7,9,21,23 1,3,5,7,9,21,23,一共 7 7 7 个。

数据规模与约定

  • 对于 10 % 10\% 10% 的测试数据, 1 ≤ N ≤ 100 1 \leq N \le 100 1N100
  • 对于全部的测试数据, 1 ≤ N ≤ 1 0 7 1 \le N \leq 10^7 1N107

问题分析

代码解释:

  1. check 函数

    • 功能:检查一个数字是否是“好数”。
    • 实现:
      • 将数字 x 的每一位分解并存储到数组 num 中。
      • 遍历数组 num,检查每一位是否符合“好数”的条件:
        • 奇数位(第 1、3、5… 位)必须是奇数。
        • 偶数位(第 2、4、6… 位)必须是偶数。
      • 如果所有位都符合条件,则返回 true,否则返回 false
  2. main 函数

    • 输入数字 n,表示需要检查的范围 [1, n]
    • 遍历范围 [1, n],调用 check 函数检查每个数字是否是“好数”。
    • 统计“好数”的数量并输出结果。

示例:

  • 输入:n = 20
  • 输出:10
  • 解释:在 [1, 20] 范围内,“好数”有:1, 3, 5, 7, 9, 10, 12, 14, 16, 18。

总结:

通过分解数字的每一位并检查其奇偶性,判断一个数字是否是“好数”,并统计给定范围内的“好数”数量。

完整代码

#include <iostream>
#include <algorithm>
using namespace std;const int N = 1e7 + 10;  // 定义常量 N,表示最大可能的数字范围int n;  // 定义整数 n,表示需要检查的数字范围 [1, n]// 检查一个数字是否是“好数”
bool check(int x) {int num[8];  // 定义一个数组,用于存储数字 x 的每一位数字int idx = 0; // 定义索引 idx,用于记录当前存储的位数// 将数字 x 的每一位分解并存储到数组 num 中while (x) {num[idx++] = x % 10;  // 取出当前最低位数字,并存储到 num 中x /= 10;              // 去掉最低位,继续处理下一位}// 遍历数组 num,检查每一位是否符合“好数”的条件for (int i = 0; i < idx; i++) {// 如果当前是奇数位(第 1、3、5... 位),但数字是偶数,则不是“好数”if ((i + 1) % 2 == 1 && num[i] % 2 == 0) return false;// 如果当前是偶数位(第 2、4、6... 位),但数字是奇数,则不是“好数”if ((i + 1) % 2 == 0 && num[i] % 2 == 1) return false;}// 如果所有位都符合条件,则是“好数”return true;
}int main() {// 输入数字 n,表示需要检查的范围 [1, n]scanf("%d", &n);int res = 0;  // 定义结果变量 res,用于统计“好数”的数量// 遍历范围 [1, n],检查每个数字是否是“好数”for (int i = 1; i <= n; i++) {if (check(i)) res++;  // 如果是“好数”,则 res 加 1}// 输出“好数”的总数printf("%d", res);return 0;
}

http://www.ppmy.cn/news/1580526.html

相关文章

如何在Visual Studio和 .NET 7中使用C#配置代理服务器进行网页抓取,并使用HtmlAgilityPack进行HTML解析

立即注册获得充值奖励&#xff0c;并开始自己的项目。亮数据-网络IP代理及全网数据一站式服务商 本项目演示了如何在 Visual Studio 和 .NET 7 中使用 C#配置代理服务器进行网页抓取&#xff0c;并使用 HtmlAgilityPack 进行 HTML 解析。通过使用代理服务器的 IP 地址&#xf…

Deepseek+扣子实现xhs内容自动采集

效果展示 先看看演示效果 复制小红书链接&#xff0c;点击导入多维表格 之后就能在多维表格上自动拆解小红书的内容并记录了 Coze工作流搭建步骤 页面搭建 访问网站 地址&#xff1a;https://www.coze.cn/home 登录网站 创建应用 点击创建应用 点击创建空白应用 创建应…

Spring Boot集成JWT:打造安全的RESTful API

Spring Boot集成JWT&#xff1a;打造安全的RESTful API 1. JWT简介 JWT&#xff08;JSON Web Token&#xff09; 是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在各方之间安全传输信息。它广泛应用于身份认证和授权场景&#xff0c;尤其适合无状态的RESTfu…

华为云在工业数字化方面的优势

华为云在工业数字化领域展现出全方位的优势&#xff0c;为制造业的转型升级提供了强大的助力。 一、专业的数字化诊断治理服务 华为云的数字化诊断治理专家服务为企业提供全面的深度诊断、成熟度评估、产业升级分析、创新治理和专家咨询等服务。其诊断模型参考国际国内标准&a…

系统思考:恶性循环

去年&#xff0c;我给一家知名人力资源公司交付了两个项目——一个在6月&#xff0c;另一个在8月&#xff0c;至今半年多了依然没有收到课酬。催促多次&#xff0c;得到的答复却各式各样&#xff1a;销售说老板卡了额度&#xff0c;老板说具体情况还需了解。每一次的推诿&#…

[贪心算法]-最大数(lambda 表达式的补充)

1.解析 我们一般使用的排序比较大小都是 a>b 那么a在b的前面 ab 无所谓 a<b a在b的后面 本题的排序则是 ab>ba 那么a在b的前面 abba 无所谓 ab<ba a在b的后面 2.代码 class Solution { public:string largestNumber(vector<int>& nums) {//1.先把所有…

Deepseek本地部署指南:在linux服务器部署,在mac远程web-ui访问

DeepSeek本地部署指南&#xff0c;特别是在Linux服务器上部署并在Mac上实现远程Web-UI访问&#xff0c;可以按照以下步骤进行&#xff1a; 一、在Linux服务器上部署DeepSeek模型 安装Ollama 使用命令curl -sSfL https://ollama.com/install.sh | sh来安装Ollama。安装完成后&a…

利用knn算法实现手写数字分类

利用knn算法实现手写数字分类 1.作者介绍2.KNN算法2.1KNN&#xff08;K-Nearest Neighbors&#xff09;算法核心思想2.2KNN算法的工作流程2.3优缺点2.4 KNN算法图示介绍 3.实验过程3.1安装所需库3.2 MNIST数据集3.3 导入手写数字图像进行分类3.4 完整代码3.5 实验结果 1.作者介…