当前位置: 首页 > news >正文

【每日一题】【枚举】【估计时间复杂度】[蓝桥杯 2024 省 B] 好数 C++

P10424 [蓝桥杯 2024 省 B] 好数

[蓝桥杯 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到 n n n枚举,然后每一个数字都判断一下是否为好数即可。

从时间复杂度来看
粗略估计:
从1到n每次最多内循环7次,总共 O ( 7 N ) O(7N) O(7N)
因为 1 ≤ N ≤ 1 0 7 1 \le N \leq 10^7 1N107
所以不会超时。

顺便说说如何判断是否为好数。

一个数按位且1后是判断最后一位(最低位)是为奇数,如果按位且1后答案为1那么最低位就是奇数;否则为偶数。

这里还用到了按位异或判断是否一致,也就说奇数位(个位、百位、万位……)上的数字是不是奇数的判断。

if((x&1) ^ k)return false;

如果不看数据规模和运行时间、时间复杂度,首先想着优化就完蛋了。

时间复杂度分析

粗略估计:
从1到n每次最多内循环7次,总共 O ( 7 n ) O(7n) O(7n)

代码

#include <iostream>
#include <algorithm>
#include <vector>
using namespace  std;
bool check(int x){bool k = true;while(x){if((x&1) ^ k)return false;k^=true;x/=10;}return true;
}
int main(){int n,cnt = 0;cin >> n;for(int i=1;i<=n;i++)if(check(i))cnt++;cout << cnt;return 0;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Python 逆向滑块】(实战五)逆向滑块,并实现用Python+Node.js 生成滑块、识别滑块、验证滑块、发送短信
  • Java 设计模式之单例模式
  • 如何从智联招聘网站快速抓取职位详情?两大技巧揭秘
  • 【Linux修行路】进度条小程序
  • Java处理大数据的技巧
  • 使用VM安装K8S
  • 电路原理分析
  • 科普文:微服务之Spring Cloud Alibaba消息队列组件RocketMQ工作原理
  • 树模型详解3-xgboost
  • Elasticsearch的DSL查询,分组后排序,并查询组数量
  • 学工系统学生家庭情况登记功能概述
  • NET的全称、主要功能以及在计算机网络中的作用?
  • 8.3 day bug
  • 快速方便地下载huggingface的模型库和数据集
  • MQTT(速记版)
  • 深入了解以太坊
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 【React系列】如何构建React应用程序
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • C++入门教程(10):for 语句
  • es6(二):字符串的扩展
  • Fastjson的基本使用方法大全
  • Hexo+码云+git快速搭建免费的静态Blog
  • HomeBrew常规使用教程
  • js 实现textarea输入字数提示
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • python 学习笔记 - Queue Pipes,进程间通讯
  • React-redux的原理以及使用
  • Twitter赢在开放,三年创造奇迹
  • use Google search engine
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 如何利用MongoDB打造TOP榜小程序
  • 删除表内多余的重复数据
  • 一个完整Java Web项目背后的密码
  • 移动端 h5开发相关内容总结(三)
  • 原生 js 实现移动端 Touch 滑动反弹
  • 最近的计划
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • Spring第一个helloWorld
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • #07【面试问题整理】嵌入式软件工程师
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (20050108)又读《平凡的世界》
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (附源码)计算机毕业设计高校学生选课系统
  • (简单) HDU 2612 Find a way,BFS。
  • (十三)Flink SQL
  • (详细文档!)javaswing图书管理系统+mysql数据库
  • (小白学Java)Java简介和基本配置
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)ObjectiveC 深浅拷贝学习
  • (转)机器学习的数学基础(1)--Dirichlet分布