蓝桥杯省赛真题C++B组-2024好数

embedded/2025/3/16 13:09:33/

一、题目

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

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

输入格式
一个整数 NN。

输出格式
一个整数代表答案。

样例输入 1
24
样例输出 1
7
样例输入 2
2024
样例输出 2
150
样例说明
对于第一个样例,2424 以内的好数有 11、33、55、77、99、2121、2323,一共 77 个。

评测用例规模与约定
对于 10%10% 的评测用例,1≤N≤100 1≤N≤100 。

对于 100%100% 的评测用例,1≤N≤107 1≤N≤107 。

运行限制
语言    最大运行时间    最大运行内存
C++    1s    256M
C    1s    256M

二、思路

我是看的答案后的思路:要计算从1-N共有多少个好数,我们可以遍历1-N,判断哪个是好数,是的计数器加一,最终输出好数的个数。

接着编写一个判断是否是好数的函数,注意返回bool类型,传入我们需要判断的数,我们从右向左便利每一位,奇数位是偶数返回false或者偶数位是奇数返回false,除此之外,返回true,则成功地判断是好数;

1.如何从左到右遍历每一位:循环的开始对10取余得到最低位(个位数),判断完后除10去掉最低位。

while(1){

        int digit = n % 10;

        //奇数位是偶数返回false或者偶数位是奇数返回false

        digit /= 10;

}

2.如何判断奇数位是偶数或者偶数位是奇数:我们定义一个标记数(position)为1,标记数的奇偶代表位数的奇偶,每次循环结束后标记数+1,判断当前这轮循环的标记数为奇数,但是最低位为偶数,返回false,否则标记数为偶数,最低位为奇数,返回false。

if(position % 2 == 1){

        if(digit % 2 == 0) return false;

}else {

        if(digit % 2 == ) return false;

}

三、代码

#include<iostream>
//编写判断是否是好数的函数
//先看下面主函数
bool isGood(int n){//我们拿到这个数,从个位开始判断,先把个位标记成1;//判断是否奇数位,再判断奇数位上的数是否是奇数 //如果是奇数位为偶数返回false,如果偶数位是奇数也返回false //标记数加1,此时标记数为2,代表百位,能被二整除//再去掉最后一位数 //从个位开始标记int position = 1; //遍历n的每一位数 while(n > 0){int digit = n % 10; if(position % 2 == 1){if(digit % 2 == 0) return false;}else if(position % 2 == 0){if(digit % 2 == 1) return false;}n /= 10;position ++; } return true;
}
int main(){ //我们需要在主函数中输入这个数N,遍历从1-N的每一个数,来判断是否是好数,//可以调用函数来判断,这个函数是我们自己编写,让输出这个好数的个数//计算有多少个好数int N;std::cin>>N;int count = 0;for(int i = 1; i <= N; i++){if(isGood(i)){count++;}} std::cout<<count;return 0; 
} 

 

四、反思 

标记数的奇偶代表位数的奇偶


http://www.ppmy.cn/embedded/173069.html

相关文章

PyTorch分布式训练

本文结构&#xff1a; 分布式训练概述环境设置数据并行&#xff08;DDP&#xff09;模型并行启动训练性能优化建议示例代码参考资料和相关问题 以下是为您整理的PyTorch分布式训练教程指南&#xff1a; 一、PyTorch分布式训练核心概念 数据并行&#xff1a;通过分割数据集实…

以太坊生态中有代币标准和协议,针对不同场景设计了丰富的功能

一、同质化代币&#xff08;Fungible Tokens&#xff09; 1. ERC-20&#xff08;基础标准&#xff09; 用途&#xff1a;同质化代币&#xff08;如 USDT、UNI&#xff09;。 特点&#xff1a;标准化转账和授权接口。 2. ERC-777&#xff08;增强版 ERC-20&#xff09; 改进…

华为重拳出击!华为重拳出击!华为重拳出击!

大家好&#xff0c;我是小程程。 华为出了一个大瓜哦&#xff01; 华为多名产品线负责人被开除 据财新网 3 月 10 日报道&#xff0c;华为最近发了一则内部通报&#xff1a; 华为称&#xff0c;经审计发现&#xff0c;&#xff08;ICT 产品与解决方案&#xff0c;半导体业务部、…

【数据挖掘】通过心脏病数据案例熟悉数据挖掘的完整过程

心脏病数据挖掘过程 一、加载数据源 # 如果没有安装数据源所依赖的库&#xff0c;则先安装数据源所在的python库: pip install ucimlrepo # 引入pandas和ucimlrepo import pandas as pd from ucimlrepo import fetch_ucirepo# fetch dataset Heart Disease dataset的Id为45 h…

K8S之QoS详解

Pod QoS 类 服务质量&#xff08;Quality of Service&#xff0c;QoS&#xff09;类&#xff0c; 阐述 Kubernetes 如何根据为 Pod 中的容器指定的资源约束为每个 Pod 设置 QoS 类。Kubernetes 依赖这种分类来决定当 Node 上没有足够可用资源时要驱逐哪些 Pod。 QoS 类&#…

《鸿蒙系统下AI模型训练加速:时间成本的深度剖析与优化策略》

在当今数字化浪潮中&#xff0c;鸿蒙系统凭借其独特的分布式架构与强大的生态潜力&#xff0c;为人工智能的发展注入了新的活力。随着AI应用在鸿蒙系统上的日益普及&#xff0c;如何有效降低模型训练的时间成本&#xff0c;成为了开发者与研究者们亟待攻克的关键课题。这不仅关…

如何优化AI模型的Prompt:深度指南

随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;AI模型在文本生成、翻译、问答等领域的应用越来越广泛。在使用这些模型时&#xff0c;**Prompt&#xff08;提示&#xff09;**的质量直接影响输出结果的好坏。优化Prompt不仅能提升生成文本的准确性&#xf…

机器学习与深度学习中模型训练时常用的四种正则化技术L1,L2,L21,ElasticNet

L1正则化和L2正则化是机器学习中常用的两种正则化方法&#xff0c;用于防止模型过拟合。它们的区别主要体现在数学形式、作用机制和应用效果上。以下是详细对比&#xff1a; 1. 数学定义 L1正则化&#xff08;也叫Lasso正则化&#xff09;&#xff1a; 在损失函数中加入权重参…