蓝桥杯官网填空题(9数算式)

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

观察如下的算式:

9213×85674=789314562

左边的乘数和被乘数正好用到了  1 ~ 9 的所有数字,每个 1 次。 而乘积恰好也是用到了 1 ~ 9 的所有数字,并且每个 1次。

请你借助计算机的强大计算能力,找出满足如上要求的 9 数算式一共有多少个?

注意:

  1. 总数目包含题目给出的那个示例。
  2. 乘数和被乘数交换后作为同一方案来看待。

运行限制

import java.util.*;

public class Main {
  static int ans=0;
    static int[] biaoji=new int[10];
    static int[] a=new int[10];
    public static void main(String[] args) {
        f(1);
        System.out.println(ans/2);
    }
    public static void f(int n){
        if(n==10){
            int[] x=new int[9];
            int[] y=new int[9];
            int[] sum=new int[9];

            x[1]=a[1];
            x[2]=a[1]*10 + a[2];
            x[3]=a[1]*100 + a[2]*10 + a[3];
            x[4]=a[1]*1000 + a[2]*100 + a[3]*10 + a[4];
            x[5]=a[1]*10000 + a[2]*1000 + a[3]*100 + a[4]*10 + a[5];
            x[6]=a[1]*100000 + a[2]*10000 + a[3]*1000 + a[4]*100 + a[5]*10 + a[6];
            x[7]=a[1]*1000000 + a[2]*100000 + a[3]*10000 + a[4]*1000 + a[5]*100 + a[6]*10 + a[7];
            x[8]=a[1]*10000000 + a[2]*1000000 + a[3]*100000 + a[4]*10000 + a[5]*1000 + a[6]*100 + a[7]*10 + a[8];

            y[1]=a[2]*10000000 + a[3]*1000000 + a[4]*100000 + a[5]*10000 + a[6]*1000 + a[7]*100 + a[8]*10 + a[9];
            y[2]=a[3]*1000000 + a[4]*100000 + a[5]*10000 + a[6]*1000 + a[7]*100 + a[8]*10 + a[9];
            y[3]=a[4]*100000 + a[5]*10000 + a[6]*1000 + a[7]*100 + a[8]*10 + a[9];
            y[4]=a[5]*10000 + a[6]*1000 + a[7]*100 + a[8]*10 + a[9];
            y[5]=a[6]*1000 + a[7]*100 + a[8]*10 + a[9];
            y[6]=a[7]*100 + a[8]*10 + a[9];
            y[7]=a[8]*10 + a[9];
            y[8]=a[9];

            sum[1]=x[1]*y[1];
            sum[2]=x[2]*y[2];
            sum[3]=x[3]*y[3];
            sum[4]=x[4]*y[4];
            sum[5]=x[5]*y[5];
            sum[6]=x[6]*y[6];
            sum[7]=x[7]*y[7];
            sum[8]=x[8]*y[8];

            int s=check(sum);
            if(s!=0){
                ans=ans+s;
            }
            return;
        }
        for(int i=1;i<=9;i++){
            if(a[i]==0&&biaoji[i]==0){
                a[i]=n;
                biaoji[i]=1;
                f(n+1);
                a[i]=0;
                biaoji[i]=0;
            }
        }
    }
    public static int check(int[] sum){
        int count=0;
        for(int i=1;i<=8;i++){
            if(checksum(sum[i])){
                count++;
            }
        }
        return count;
    }
    public static boolean checksum(int sum){
        String str=String.valueOf(sum);
        char[] a1=str.toCharArray();
        Arrays.sort(a1);
        char[] a2=new char[]{'1','2','3','4','5','6','7','8','9'};
        if(Arrays.equals(a1,a2)){
            return true;
        }
        return false;
    }
}

    • 最大运行时间:1s
    • 最大运行内存: 128M
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值