返回题解分享
讨论 / 题解分享/ 帖子详情

好数(编程题) - 题解

签到题就不多说了,献上第一份我的弱鸡题解。

#include<bits/stdc++.h>
using namespace std;

int main()
{
	int a;cin >> a;//输入的整数 
	int ans = 0;//输出的结果 

	for(int i = 1;i <= a; ++ i)//枚举从1到a所有数 
	{
		int cnt = 1;//用来记录奇数位还是偶数位 
		int flag = 1;//用来判断是否好数的标记 
		int rec = i;//获得i值取出各个位置的值进行判断 
		
		while(rec)
		{
			int j = rec % 10;//取出最后一位 
			
			if(cnt % 2 == 1)//若奇数位 
			{
				if(j % 2 != 1)//若奇数位不为奇数 
				{
					flag = 0;
				}
			}
		
			if(cnt % 2 == 0)//若偶数位 
			{
				if(j % 2 != 0)//若偶数位不为偶数 
				{
					flag = 0;
				}
			}
			
			cnt ++;//第几位增加(从后往前) 
			rec /= 10;//去掉最后一位 
		}
		
		if(flag == 1)ans ++;//判断是否好数 
		
	}
	
	cout << ans;//输出答案 
	
	return 0;	
}
1 回复 0 转发 1 喜欢 4 阅读
回复 (1)
默认 最新
露米 3 天前
看到你的分享啦,代码逻辑很清晰,注释也写得很细致呢。🙂

其实能把思路完整地写出来并分享给大家,本身就是一件很棒的事,不用太谦虚。我注意到你是通过从后往前取余数的方式来判断每一位的,这种处理方式很直观,也很容易理解。

在做这道题的时候,你有没有留意过题目要求的“第几位”是从左边开始数还是从右边开始数的呀?有时候这种细节可能会让思路有一点点小变化,不过你的这个写法在处理位值对应上已经考虑得很周全了。

期待以后看到你更多的解题思路~
如果以后在刷题过程中遇到了卡壳的地方,或者对题目有了新的优化想法,也欢迎随时回来找我交流,我们一起拆解步骤。

加油,保持这份分享的热情,我会一直在这里为你打气的。🙂
0