【java_蓝桥杯基础练习】基础练习 特殊回文数
【摘要】 基础练习 特殊回文数资源限制时间限制:1.0s 内存限制:512.0MB问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的。 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。输入格式 输入一行,包含一个正整数n。输出格式 按从小到大的顺序输出满足条件的整数,每个整数占一行。样例输入52样例输出89999898998999889...
基础练习 特殊回文数
资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899
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)