【java_蓝桥杯基础练习】基础练习 特殊回文数

举报
昵称: 发表于 2022/02/22 16:30:18 2022/02/22
【摘要】 基础练习 特殊回文数资源限制时间限制:1.0s   内存限制:512.0MB问题描述  123321是一个非常特殊的数,它从左边读和从右边读是一样的。  输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。输入格式  输入一行,包含一个正整数n。输出格式  按从小到大的顺序输出满足条件的整数,每个整数占一行。样例输入52样例输出89999898998999889...

基础练习 特殊回文数

资源限制

时间限制:1.0s   内存限制:512.0MB

问题描述

  123321是一个非常特殊的数,它从左边读和从右边读是一样的。
  输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

输入格式

  输入一行,包含一个正整数n。

输出格式

  按从小到大的顺序输出满足条件的整数,每个整数占一行。

样例输入

52

样例输出

899998
989989
998899

数据规模和约定

  1<=n<=54。

分析:

根据题目可知是让我们求回文数,所谓回文数就是(它从左边读和从右边读是一样的。)题目要求的是对五位和六位数十进制数,所以使用for循环对50000-999999范围区间的数进行遍历即可,判断回文数,就是倒叙输出和顺序输出的值一样就是回文数,把每次的值转换为StringBuffer类型,然后使用StringBuffer对象中的reserve()使值完成倒叙和原字符串进行比较即可,然后在使用while循环对这个值每一位累加和和输入值n进行判断,如果相同则输出。原理就是这么简单,我们来看代码。

import java.util.Scanner;
public class Main{
	public static void main(String[] args) {
		// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
//使用n来存放输入值n
int n=sc.nextInt();
//进行对五位六位十进制数的遍历结果
for(int i=50000;i<=999999;i++) {
	//先把int类型转换为String的s,然后在于使用StringBuffer对象的reverse()
	//对字符串进行反转,然后使用to.String()转换为String类型与s进行比较
	String s=i+"";
	StringBuffer sb=new  StringBuffer(s);
	if(sb.reverse().toString().equals(s)) {
		//sum 用来存放各位之和,用来和n进行判断
		int sum=0;
		int u=i;
		//用来取每个数字的最后一位
		while(u!=0) {
			sum+=u%10;
			u/=10;
		}
//      判断并输出
		if(sum==n)
			System.out.println(i);
	}
}
	}

}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。