您的位置:首页 > 编程语言 > Java开发

蓝桥杯 基础练习-特殊回文数-java

2017-11-23 18:25 369 查看

Description

123321是一个非常特殊的数,它从左边读和从右边读是一样的。

输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

Input

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

Output

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

Sample Input

52

Sample Output

899998
989989
998899

Hint

数据规模和约定

1<=n<=54。

Source

蓝桥杯

代码如下:
import java.util.Scanner;

import java.util.List;

import java.util.ArrayList;

public class Main1564 {

    static List<String> lis=new ArrayList<String>();        //用来储存符合和为n的值

    public static void main(String[] args) {

        Scanner sc=new Scanner(System.in);

        int n=sc.nextInt();

        find(n);        //利用循环把10000-1000000的值个位数的和加起来与n比较

        check(lis);    //检查是否为回文数

        sc.close();    

    }

    static void find(int n){

        for(int i=10000;i<1000000;i++){

            if(add(i,n))

                lis.add(Integer.toString(i));

        }

    }

    static void check(List<String> lis){

        for(int i=0;i<lis.size();i++){

            boolean flag=true;

            String str=lis.get(i);

            int len=str.length()-1;

            for(int j=0;j<=len;j++,len--){

                if(str.charAt(j)!=str.charAt(len)){

                    flag=false;

                    break;

                }

            }

            if(flag)

                System.out.println(str);

        }

    }

    static boolean add(int i,int n){        //将值与值的比较

        int sum=0;

        int a=i/100000;

        int b=i%100000/10000;

        int c=i%100000%10000/1000;

        int d=i%100000%10000%1000/100;

        int e=i%100000%10000%1000%100/10;

        int  f=i%100000%10000%1000%100%10;

        sum=a+b+c+d+e+f;

        if(sum==n)

            return true;

        else

            return false;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编程 java