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

算法题(10):好数

审题:

需要判断出1-N的范围内有多少个好数,并输出

思路:

遍历数据:需要用for循环(从1循环到N)

每一位判断:用while循环,先从个位开始,每循环一次就让记录位数的变量++,且要让数据i少一位。

判断条件:如果是奇数位且i取余2后余数是0,说明不是好数。

如果是偶数位且i取余2后余数不是0,说明不是好数。

解题:

由于我们需要数据本身,又需要位数。

所以我们让输入的数据是string类型,先通过size取到位数,然后通过stoi转回int型数据

(1)由于我们需要记录是否该数是好数,所以设置了sign变量,当他为1的时候代表是好数,为0代表不是好数。

只有当该数是好数时我们才会让cou++,表示好数的数量加一

(2)由于i需要不断++,所以我们判断的过程不能改变i的值,于是用了i0存储i的值,通过改变i0实现判不同的位数

代码分享:

#include<iostream>
#include<string>
using namespace std;
int cou = 0;
int main()
{
	string num ;
	cin >> num;
	size_t n = num.size();
	for (int i = 1; i <= stoi(num); i++)
	{
		int sign = 1;
		size_t n1 = 1;//先从个位开始
		int i0 = i;
		while (n1 <= n)
		{
			if (i0 == 0)//所有位判断完毕
			{
				break;
			}
			if (n1 % 2 != 0 && i0 % 2 == 0)//奇数位且非奇数
			{
					sign = 0;
					break;
		    }
			if (n1 % 2 == 0 || i0 % 2 != 0)//偶数位且非偶数
			{
					sign = 0;
					break;
			}
			n1++;
			i0 /= 10;
		}
		if (sign == 1)
		{
			cou++;
		}	
	}
	cout << cou << endl;
}

链接:[蓝桥杯 2024 省 B] 好数 - 洛谷

二刷总结:

比较容易忘记更新条件,在while循环处忘记了更新n1和i0


http://www.kler.cn/a/445581.html

相关文章:

  • go-zero(十五)缓存实践:分页列表
  • [Python学习日记-73] 面向对象实战1——答题系统
  • C语言编程1.27汉诺塔
  • 【STM32 Modbus编程】-作为主设备写入多个线圈和寄存器
  • word实现两栏格式公式居中,编号右对齐
  • STM32MP1linux根文件系统目录作用
  • STM32-- keil -常用功能
  • Redis 附加功能(二)— 自动过期、流水线与事务及Lua脚本
  • 并发修改导致MVCC脏写问题
  • 【后端面试总结】什么是CAP原理
  • 常用es命令
  • 网络协议栈学习(一)socket通信实例
  • 王佩丰24节Excel学习笔记——第十四讲:日期函数
  • 我的性能优化经验
  • 中间件 mysql安装
  • SpringCloud 集成 Eureka服务,本机测试
  • 如何快速提升网站的Google SEO流量?
  • 微信小程序:获取,修改data中的数据(直接取出,通过变量取出)
  • 阿里云Maven库地址、查看各个版本的jar包
  • Python球球大作战
  • petalinux 错误汇总
  • 品牌在社交媒体上的营销框架,有哪些重要节点?
  • Ubuntu软件更新及删除
  • 项目中常见的Mapper文件和接口
  • spring(三):如何通过配置文件实现依赖注入(DI)?set方法注入和构造器方法注入两种方式代码演示,两种注入方式的注意事项以及本质区别。
  • 用 Python 实现井字棋游戏