蓝桥杯 历届试题 回文数字

来源:互联网 发布:淘宝怎样找妹子服务 编辑:程序博客网 时间:2024/05/24 05:12

问题描述
  观察数字: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 Main {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        int n=sc.nextInt();//n, m,分别表示小岛的个数和桥的数量。        boolean exist=false;        //计算5位数        for(int i=1;i<=9;i++){            if(n-i*2<0){                break;            }            else if(n-i*2>27){                continue;            }            for(int j=0;j<=9;j++){                if(n-(i+j)*2<0){                    break;                }                else if(n-(i+j)*2>9){                    continue;                }                System.out.println(i*10000+j*1000+(n-(i+j)*2)*100+j*10+i);                exist=true;            }        }        //计算6位数        for(int i=1;i<=9;i++){            if(n-i*2<0){                break;            }            else if(n-i*2>36){                continue;            }            for(int j=0;j<=9;j++){                if(n-(i+j)*2<0){                    break;                }                else if(n-(i+j)*2>18 || (n-(i+j)*2)%2==1){                    continue;                }                System.out.println(i*100000+j*10000+(n-(i+j)*2)/2*(1000+100)+j*10+i);                exist=true;            }        }        if(!exist)            System.out.println(-1);    }}
0 0
原创粉丝点击