回文数

回文数介绍
“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中,也有具有这样特征的一类数字,称为回文数。
设 n 是一任意自然数,若将 n 的各位数字反向排列得到自然数 n1,如果 n1 与 n 相等,则称 n 为回文数。举例如下:
若 n = 12421 ,则称 n 为回文数;
但若 n = 12457,则 n 不是回文数。
【例题】
判断一个给定的 5 位整数是否是一个回文数。

package com.jinglan.exercise;

import java.util.Scanner;

/**
 * 任务:判断一个给定的 5 位数是否是一个回文数
 */
public class Demo03 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		// 声明 int 类型的变量 num ,用来获取控制台输入
		int num = scanner.nextInt();
		/********** Begin **********/
		// 第一步:获取个位数的数值
		int num1 = num % 10;
		// 第二步:获取十位数的数值
		int num2 = num / 10 % 10;
		// 第三步:获取百位数的数值
		int num3 = num / 100 % 10;
		// 第四步:获取千位数的数值
		int num4 = num / 1000 % 10;
		// 第五步:获取万位数的数值
		int num5 = num / 10000 % 10;
		// 第六步:将获取的个位数值乘以 10000
		int a = num1 * 10000;
		// 第七步:将获取的十位数值乘以 1000
		int b = num2 * 1000;
		// 第八步:将获取的百位数值乘以 100
		int c = num3 * 100;
		// 第九步:将获取的千位数值乘以 10
		int d = num4 * 10;
		// 第十步:将获取的万位数值乘以 1
		int e = num5 * 1;
		// 第十一步:将第六、七、八、九、十步转换后的数值相加
		int f = a + b + c + d + e;
		// 第十二步:判断变量 num 是否等于第十一步的数值,如果等于,则在控制台输出“回文数”;反之,则输出“不是回文数”
		if (num == f) {
			System.out.print("回文数");
		} else {
			System.out.print("不是回文数");
		}
	}
}

运行结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

问题描述
  123321是一个非常特殊的数,它从左边读和从右边读是一样的。
  输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
  输入一行,包含一个正整数n。
输出格式
  按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899
数据规模和约定
  1<=n<=54。

package com.jinglan.exercise;

import java.util.Scanner;

public class Basic_9 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		for (int i = 10000; i <= 999999; i++) {
			if (i < 100000) {
				int a = i / 10000;// 万位
				int b = i / 1000 % 10;// 千位
				int c = i / 100 % 10;// 百位
				int d = i / 10 % 10;// 十位
				int e = i % 10;// 个位
				if (a == e && b == d && a + b + c + d + e == n) {
					System.out.println(i);
				}
			} else {
				int f = i / 100000;// 十万位
				int g = i / 10000 % 10;// 万位
				int h = i / 1000 % 10;// 千位
				int j = i / 100 % 10;// 百位
				int k = i / 10 % 10;// 十位
				int l = i % 10;// 个位
				if (f == l && g == k && h == j && f + g + h + j + k + l == n) {
					System.out.println(i);
				}
			}
		}
	}

}

运行结果:
在这里插入图片描述
在这里插入图片描述

问题描述
  1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。
输出格式
  按从小到大的顺序输出满足条件的四位十进制数。

package com.jinglan.exercise;

public class Basic_8 {
	public static void main(String[] args) {
		for (int n = 1000; n <= 9999; n++) {
			if (n / 1000 == n % 10 && n / 100 % 10 == n / 10 % 10) {
				System.out.println(n);
			}

		}

	}

}

运行结果:
1001 1111 1221 1331 1441 1551 1661 1771 1881 1991 2002 2112 2222 2332 2442 2552 2662 2772 2882 2992 3003 3113 3223 3333 3443 3553 3663 3773 3883 3993 4004 4114 4224 4334 4444 4554 4664 4774 4884 4994 5005 5115 5225 5335 5445 5555 5665 5775 5885 5995 6006 6116 6226 6336 6446 6556 6666 6776 6886 6996 7007 7117 7227 7337 7447 7557 7667 7777 7887 7997 8008 8118 8228 8338 8448 8558 8668 8778 8888 8998 9009 9119 9229 9339 9449 9559 9669 9779 9889 9999

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

立志Java工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值