【每日一题】【枚举】【估计时间复杂度】[蓝桥杯 2024 省 B] 好数 C++
创始人
2024-11-11 06:36:37
0

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 1≤N≤100。
  • 对于全部的测试数据, 1 ≤ N ≤ 1 0 7 1 \le N \leq 10^7 1≤N≤107。

做题思路

做蓝桥杯的题首先要看数据规模和运行时间,第二看时间复杂度。

这道题最暴力的做法就是从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 1≤N≤107。
所以不会超时。

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

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

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

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

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

时间复杂度分析

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

代码

#include  #include  #include  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; } 

相关内容

热门资讯

房卡必备教程“微信开牛牛房卡在... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
正规牛牛房卡总代理/新天道大厅... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:8488009许多玩家在游戏中会购买房卡来享受更...
微信链接牛牛房卡/招财猫大厅牛... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:33903369许多玩家在游戏中会购买房卡来享受...
秒懂教程“牛牛在哪里购买房卡”... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来享受...
拼三张好友房卡在哪里买/新世界... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:55051770许多玩家在游戏中会购买房卡来享...
终于找到“微信群金花房卡哪里可... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
炸金花如何开好友房间房卡/新二... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:8488009许多玩家在游戏中会购买房卡来享受...
给大家讲解“开牛牛群怎么买房卡... 天酷大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来...
微信群炸金花房卡怎么买/神皇大... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:33903369许多玩家在游戏中会购买房卡来享...
一分钟推荐“金花链接如何创建房... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
微信牛牛房卡如何购买/新518... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:55051770许多玩家在游戏中会购买房卡来享受...
给大家讲解“微信斗牛房间怎么弄... 微信斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来...
微信好友炸金花房卡从哪里买/斗... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:8488009许多玩家在游戏中会购买房卡来享受...
终于找到“炸金花房卡链接怎么买... 悠悠互娱是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡...
微信牛牛房卡如何购买/新世界大... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:33903369许多玩家在游戏中会购买房卡来享受...
一分钟推荐“有没有玩金花房房卡... 新琉璃金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡...
炸金花房卡如何充值/新海贝大厅... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:55051770许多玩家在游戏中会购买房卡来享...
创建炸金花链接房间房卡/新九游... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:8488009许多玩家在游戏中会购买房卡来享受...
终于找到“金花房卡购买渠道,天... 天王大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来...
微信炸金花房卡哪里有卖/金牛座... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:33903369许多玩家在游戏中会购买房卡来享...