【蓝桥杯】1434:回文数字—>三种判断回文的方法

这篇具有很好参考价值的文章主要介绍了【蓝桥杯】1434:回文数字—>三种判断回文的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:

通过对蓝桥杯真题回文数字的讲解,引出关于三种回文判断的方式:数组或字符串直接反转数字


目录

前言:

蓝桥杯题目:回文数字

题目分析:

一、数组或字符串判断回文:

二、利用栈的数据结构判断回文:

三、直接反转数字


蓝桥杯题目:回文数字

观察数字:12321,123321  都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。
本题要求你找到一些5位或6位的十进制数字。满足如下要求:
该数字的各个数位之和等于输入的整数。


题目分析:

根据题目要求,我们了解到我们需要进行判断操作的数的范围是五位数到六位数,即10000到999999,也就是我们首先要生成这些数字,其次这些数字需要满足两个条件。

第一个条件:个数位之和等于我们输入的整数;

第二个条件:回文。

所以我们根据以上分析进行代码实现。

一、数组或字符串判断回文:

int main()
{
	int n = 0;
	scanf("%d", &n);
	int num = 0;
	//生成数字
	for (num = 10000; num <= 999999; num++)
	{
		int tmp = num;
		int sum = 0;
		int count = 0;
		//计算位数之和
		while(tmp)
		{
			sum += tmp % 10;
			tmp /= 10;
			//统计位数
			count++;
		}
		//判断回文
		int arr[6] = { 0 };
		tmp = num;
		int i = 0;
		for (i = 0; i < count; i++)
		{
			arr[i] = tmp % 10;
			tmp /= 10;
		}
		int flag = 1;
		for (i = 0; i < count / 2; i++)
		{
			if (arr[i] != arr[count - i - 1])
				flag = 0;
		}
		//判断是否同时满足两个条件,并输出
		if (sum == n && flag==1)
		{
			printf("%d\n", num);
		}
	}
	return 0;
}

二、利用栈的数据结构判断回文:

我们知道栈的特性是先入后出,即先进入的元素后出,那么判断回文恰恰可以利用栈这一特性,将前面一般的元素入栈后,再依次出栈与后面一半的元素相比较,如果相同,那么就说明这串字符为回文字符。

代码如下:

int main()
{
	int n = 0;
	scanf("%d", &n);
	int num = 0;
	//生成数字
	for (num = 10000; num <= 999999; num++)
	{
		int tmp = num;
		int sum = 0;
		int count = 0;

		//计算位数之和
		while (tmp)
		{
			sum += tmp % 10;
			tmp = tmp / 10;
			//统计位数
			count++;
		}
		int flag = 1;
		//判断回文
		SeqStack s;
		//将前一半字符入栈
		for (i = 0; i < count / 2; i++)
		{
			Push(s, str[i]);
		}
		if (count % 2) // 若输入字符为奇数个时自动跳过中间的字符
			i++;
		while (!EmptyStack(s))
		{
			Pop(s, e);
			if (e!= str[i])
			{
				flag = 0;
				break;
			}
			else
				i++;
		}
		//判断是否同时满足两个条件,并输出
		if (sum == n && flag == 1)
		{
			printf("%d\n", num);
		}
	}
	return 0;
}

三、直接反转数字:

直接反转数字的方法是一种很巧妙的方法,他的思想可以理解为取某个整数每一位的逆过程,我们知道想要的到某个整数的每一位只需要每次%10,再/10即可,那么直接反转数字的方法就是该过程的逆过程,代码实现也非常简单。

int main()
{
	int n;
	int flag = 0;
	scanf("%d", &n);
	int num = 0;
	for (num = 10000;  num <=999999;  num++)
	{
		//创建临时变量tmp,循环中利用tmp进行操作,不会影响num的值
		int tmp = num;
		int t = 0;
		int sum = 0;
		while (tmp)
		{
			//这里t计算得到的值就是该串字符反转后的值
			t = t * 10 + tmp % 10;
			sum += tmp % 10;
			tmp /= 10;
		}
		if (t == num && sum == n)
		{
			flag = 1;
			printf("%d\n", num);
		}
	}
	return 0;
}

这个代码最重要的思想就是   t = t * 10 + tmp % 10;

掌握后在进行回文判断上十分简单,并且这种方式的时间复杂度与空间复杂度相较前两种方式都有了显著提高。文章来源地址https://www.toymoban.com/news/detail-488758.html

到了这里,关于【蓝桥杯】1434:回文数字—>三种判断回文的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用java判断质数的三种方法

    方法一:质数只能被1和它本身整除  方法二:一个数总能写成“n = a * b”的形式,a和b之间一定有一个数不大于n/2  方法三:每一个整数都可以看做由两个数相乘得到,且每个乘数不大于原整数的平方根  

    2024年02月13日
    浏览(54)
  • C语言素数(质数)判断的三种方法

    本文介绍了判断素数的3种方法,从素数的概念分析,确定找到素数的几个必要条件,设计思路,并将代码进行优化。此外,还使用自定义函数的形式将同样的思路进行实现。 素数,就是仅能被自身和1整除的数字。 首先我们可以提取出判断素数的三个基本条件: 素数是整数

    2024年02月04日
    浏览(47)
  • java中判断对象类型的三种方法

    instanceof instanceof 是 Java 中的一个,用于判断一个对象是否是指定类型或其子类型的实例。它的使用格式为: 其中, 对象 是待判断的对象, 类型 是要判断的类型。 instanceof 的返回值是一个布尔值,如果对象是指定类型或其子类型的实例,则返回 true ,否则返回

    2024年02月03日
    浏览(48)
  • 【C语言】判断字符类型的三种方法

    🦄 个人主页 :修修修也 🎏 所属专栏 :C语言 ⚙️ 操作环境 : Visual Studio 2022 目录 一.字符的类型分类 1.ASCII的定义:  2.ASCII的产生原因是: 3.ASCII的内容: 二.字符类型判断相关库函数 1.isdigit(),用于判断字符是否为数字。 2. isalpha(),用于判断字符是否为字母。 3. isalnum(),用

    2024年02月06日
    浏览(50)
  • 蓝桥杯之素数及相关判断方法(看这一篇就够了)

    目录 一、素数及相关概念  1、素数的性质  2、有关素数的猜想  二、素数的判断方法  1、根据性质去判断  2、改进1方法(缩小比较范围√n) 3、再次分析素数的特点,得出规律 问题:枚举n以内所有素数  4、埃氏筛法(埃拉托斯特尼筛法) 5、欧拉筛法(埃氏筛法的优化

    2023年04月15日
    浏览(70)
  • Python中可以用三种方法判断文件是否存在

    前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错。 所以最好在做任何操作之前,先判断文件是否存在。 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块、Try语句

    2024年02月02日
    浏览(49)
  • Python 判断列表里是否有重复元素的三种方法

    一、用 set 方法去重后与原列表长度比较 二、用 append 的方式把原列表中的元素添加到一个新列表,确保新列表里不存在重复的元素,然后比较两个列表 三、用 fromkeys 的方法创建一个字典,因为字典的键会自动去重,所以可以比较字典和原列表的长度,跟方法一很像

    2024年02月11日
    浏览(57)
  • C语言判断一个数是否为素数的三种方法(详细)

             今天我们来使用C语言来实现判断一个数是否为素数,首先我们需要了解到素数的概念,素数就是只能被1和它本身整除的数。             这是第一种代码,我们来分析一下,首先创建变量i和n,这里我们i用于循环,n用来存放我们输入的数字。之后我们设置一个

    2024年04月25日
    浏览(65)
  • C语言--输入任意一个数,判断它的奇偶性(三种方法)

    C语言学习分享,转载请注明出处。 求余 -- %2。任意一个数对2求余,余数=0是偶数,余数=1是奇数。 运行结果: 一个数按位与上1 -- 1。任意一个数与上1结果=0是偶数,=1是奇数。 运行结果: 判断一个数/2*2之后是否等于它本身 -- num/2*2 。任意一个数/2*2之后再与它自身进行比较

    2024年02月01日
    浏览(41)
  • 【Python】判断素数的三种方法以及for-else语句的介绍

      输入一个数,如果是素数就输出\\\"Yes\\\",否则输出\\\"No\\\" 自定义函数 is_prime() ,首先排除1,然后再对该数之前的数进行枚举,当遇到能被当前的数整除时返回False,若没有数能将其整除意味着这个数是素数,返回True。然后对返回的结果进行判断从而输出\\\"Yes\\\"或\\\"No\\\" 当然,我们可以

    2024年02月04日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包