资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
扫描二维码关注公众号,回复:
10876989 查看本文章
899998
989989
998899
数据规模和约定
1<=n<=54。
思路:先把五位和六位的回文数求出来,然后拆开加和看看与要求的和是否一样
import java.util.*;
public class Main {
public static int judge(int num,int sum_tar) {//逐位拆开加和,看看是不是与给定的相等,num是回文数,sum_tar是题目要求的和
int sum=0,tmp=num;//sum用来保存数的每位和
while (tmp>0) {
sum+=tmp%10;
tmp=tmp/10;
}
if(sum==sum_tar)
return num;
else
return -1;
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
String string;
for (int i=10000;i<=999999;i++)//求回文数,还是利用字符串反转进行会问的判断
{
int tmp;
string=String.valueOf(i);
String string2=new StringBuffer(string).reverse().toString();//求回文数,还是利用字符串反转进行会问的判断
if(string.equals(string2))
{
tmp=judge(i, n);
if(tmp>0)
System.out.println(tmp);
}
}
}
}