蓝桥杯 历届试题 回文数字

    xiaoxiao2021-03-25  107

    问题描述   观察数字: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); } }
    转载请注明原文地址: https://ju.6miu.com/read-13237.html

    最新回复(0)