P10424 [蓝桥杯 2024 省 B] 好数 题解

题目名字 P10424 [蓝桥杯 2024 省 B] 好数 题解

题目链接

题意

给一个整数n,从1到n这个区间范围内,每一个数位为偶数的数字为偶数且数位为奇数的数字为奇数,那么这个数就是好数

思路

  1. 首先确认所有的条件都必须要满足,奇对奇,偶对偶
  2. 这个很显然就是需要枚举,因为1------n这个范围内的数字都需要判断
  3. 那么就可以用bool函数判断每一个数字是否是好数,在主函数里面就负责把每个函数都过一遍
  4. 那就可以用一个数来专门去判断数位,从个位数开始判断,然后设置当这个数位为奇数时这个数是否是奇数的判断,判断完之后,数位依次递增,这个数依次减小因为需要把这个数的末尾数给剪掉,那么就欧克了

坑点

  1. 脑子没转过来,123的个位数是3不是1hhh该睡了,其他没有难点了
  2. 主要是复习了枚举和bool函数

算法一:枚举和bool

实现步骤
  1. bool判断,如果不满足条件直接return false,都满足直接return true

  2. 再加一个内部优化,当这个函数的末尾数是偶数可以直接pass,这样就不需要bool判断了

  3. x

代码
cpp 复制代码
 #include<iostream>
using namespace std;
bool check(int x){
	int cnt=1;//记数位
	while(x){
		int b=x%10;
		if(cnt%2==1)//是奇数  {
			if(b%2!=1) return false;
			}
		else if(b%2!=0)	return false;
	
		cnt++;
		x/=10;
	}
	return true;
}
int main(){
	long long int n;
	int ans=0; 
	cin>>n;
	for(int i=1;i<=n;i++){
		if(i%10%2==0){
			continue;
		}
		if(check(i)){
			ans++;
		}
	}
	cout<<ans;
	return 0;
} 

 

总结

真的很简单的一道题,但是居然因为觉得最后一个数字是最大的那个数位上的数,纠结了两个小时,好无语啊,以后写还是需要拿笔去写,脑子清楚一点,拜托。。

相关推荐
weixin_4410036421 分钟前
2025教资面试真题电子版|科目试讲+结构化真题解析|完整PDF
面试·职场和发展·pdf
程序员三藏2 小时前
Postman接口测试详解
自动化测试·软件测试·python·测试工具·职场和发展·接口测试·postman
我命由我123453 小时前
Photoshop - Photoshop 工具栏(20)混合器画笔工具
经验分享·笔记·学习·ui·职场和发展·职场发展·photoshop
元亓亓亓5 小时前
LeetCode热题100--46. 全排列--中等
算法·leetcode·职场和发展
小欣加油5 小时前
leetcode 860 柠檬水找零
c++·算法·leetcode·职场和发展·贪心算法
lijun_xiao20096 小时前
.net 面试题目
面试·职场和发展
测试老哥8 小时前
自动化测试用例的编写和管理
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
轮到我狗叫了19 小时前
力扣.84柱状图中最大矩形 力扣.134加油站牛客.abb(hard 动态规划+哈希表)牛客.哈夫曼编码
算法·leetcode·职场和发展
熬了夜的程序员21 小时前
【LeetCode】99. 恢复二叉搜索树
算法·leetcode·职场和发展
Kent_J_Truman21 小时前
LeetCode Hot100 自用
算法·leetcode·职场和发展