观察数字

PREV21

问题描述

 

  观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。

 

   本题要求你找到一些5位或6位的十进制数字。满足如下要求:

   该数字的各个数位之和等于输入的整数。

 

输入格式

 

  一个正整数 n (10<n<100), 表示要求满足的数位和。

 

输出格式

 

  若干行,每行包含一个满足要求的5位或6位整数。

   数字按从小到大的顺序排列。

   如果没有满足条件的,输出:-1

 

样例输入

 

44

 

样例输出

 

99899

 499994

 589985

 598895

 679976

 688886

 697796

 769967

 778877

 787787

 796697

 859958

 868868

 877778

 886688

 895598

 949949

 958859

 967769

 976679

 985589

 994499

 

样例输入

 

60

 

样例输出

 

-1

import java.util.Scanner;

public class PREV21 {
	public static void main(String[] args) {
		Scanner  sc = new Scanner(System.in);
        int a = sc.nextInt();
        int count = 0;
        for(int i = 10000;i<=99999;i++){
        	if(HuiWen(i)){
        		if(Fadd(i)==a){
        			count++;
        			System.out.println(i);
        		}
        	}
        }
        for(int i = 100000;i<=999999;i++){
        	if(HuiWen(i)){
        		if(Sadd(i)==a){
        			count++;
        			System.out.println(i);
        		}
        	}
        }
        if(count==0){
        	System.out.println(-1);
        }
        
	}
	
	//判断回文
   public static boolean HuiWen(int a){
	   boolean flag = true;
	   String str = String.valueOf(a);
	   for(int i=0;i<=str.length()/2;i++){
		   if(str.charAt(i)!=str.charAt(str.length()-1-i)){
			   flag = false;
		   }
	   }
	   return flag;
   }
   //对五位的数字进行相加操作
   public static int Fadd(int n){
	   int sum =0;
	   int b1 = n%100000/10000;
	   int b2 = n%10000/1000;
	   int b3 = n%1000/100;
	   int b4 = n%100/10;
	   int b5 = n%10;
	   sum = b1+b2+b3+b4+b5;
	   return sum;
   }
   
   //对六位的数字进行相加操作
   public static int Sadd(int n){
	   int sum =0;
	   int b0 = n%1000000/100000;
	   int b1 = n%100000/10000;
	   int b2 = n%10000/1000;
	   int b3 = n%1000/100;
	   int b4 = n%100/10;
	   int b5 = n%10;
	   sum = b0+b1+b2+b3+b4+b5;
	   return sum;
   }
}

猜你喜欢

转载自blog.csdn.net/qq_39536716/article/details/83058551