蓝桥杯——BASIC-9 特殊回文数_Java

本文探讨了如何使用BASIC编程语言解决蓝桥杯竞赛中的问题,通过两个for循环分别计算满足数字之和等于给定整数n的五位和六位数,这些数具有从左到右和从右到左读取相同的特性。

蓝桥杯——BASIC-9
題目传送门
问题描述
  123321是一个非常特殊的数,它从左边读和从右边读是一样的。
  输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
  输入一行,包含一个正整数n。
输出格式
  按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899
思路:
利用 BASIC-8 的方法,写出两个for循环,即五位数的和六位数的

import java.util.Scanner
public class BASIC_09 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        
//五位数
        for (int i=1;i<10;i++){
            for (int j=0;j<10;j++){
                for (int k=0;k<10;k++){
                    for (int m=0;m<10;m++){
                        for(int q =0;q<n;q++){
                                int a = i*10000+j*1000+k*100+m*10+q;
                                int b = q*10000+m*1000+k*100+j*10+i;
                                if((i+j+k+m+q)==n && a==b){
                                    System.out.println(a);
                                }
                            }
                        }
                    }
                }
            }

//六位数
        for (int i=1;i<10;i++){
            for (int j=0;j<10;j++){
                for (int k=0;k<10;k++){
                    for (int m=0;m<10;m++){
                       for(int q =0;q<n;q++){
                           for(int w=1;w<n;w++){
                               int a = i*100000+j*10000+k*1000+m*100+q*10+w;
                               int b = w*100000+q*10000+m*1000+k*100+j*10+i;
                               if((i+j+k+m+q+w)==n && a==b){
                                   System.out.println(a);
                               }
                           }
                       }
                    }
                }
            }
        }

    }
}

还有一种更简洁的方法,即将五位、六位十进制数全部遍历出来,然后利用判断条件,筛选出我们需要的即可

import java.util.Scanner;
public class BASIC_09_OS {
    public static void main(String[] args)  {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int a,b,c,d,e,f;
        for(int i = 10000;i<=99999;i++){
            a = i%10;//个位
            b = i/10%10;//十位
            c = i/100%10;//百位
            d = i/1000%10;//千位
            e = i/10000;//万位
            if(a == e && b == d && a+b+c+d+e == n){
                System.out.println(i);
            }
        }
        for(int i = 100000;i<999999;i++){
            a = i%10;//个位
            b = i/10%10;//十位
            c = i/100%10;//百位
            d = i/1000%10;//千位
            e = i/10000%10;//万位
            f = i/100000;
            if(a == f && b == e && c == d && a+b+c+d+e+f == n){
                System.out.println(i);
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值