0
点赞
收藏
分享

微信扫一扫

蓝桥杯2021年真题演练——3、货物摆放(JavaA组)

题目大意

在这里插入图片描述
简单点描述就是给定一个 n,n=2021041820210418,问满足 (a,b,c)=n的(a,b,c)组合有多少种。
答案:2430

解题思路

⭐⭐首先要明确a,b,c这三个数一定都是n的因数,因为a×b×c=n,把b×c看作一个数即a×(b×c)=n,那么a就是n的一个因数,同理b和c也是n的因数。
那么只要求出n的所有因数,然后依次枚举(a,b,c)即可。
🌙不要忽略n是long型,设置循环变量时也要考虑需不需要用long。
🌙着重考虑一下如何求n的所有因数,由于n数字过大,不恰当的方法可能消耗时间过于长,甚至根本求不出来。

代码解析

import java.util.*;

public class Main {
    public static void main(String[] args) {
        long n=2021041820210418l;//结尾加l表示是一个long型数/
        long temp=n;
        Set<Long> set=new HashSet<>();
        //计算n的所有因数,并存放到集合factor中
        for(long i=1;i<=temp;i++){
            if(n%i==0){
                temp=n/i;
                set.add(i);
                set.add(temp);
            }
        }
        ArrayList<Long> factor=new ArrayList<>(set);
        //枚举{a,b,c}
        int count=0;
        long t=0;
        for(int i=0;i<factor.size();i++){
            long a=factor.get(i);
            for(int j=0;j<factor.size();j++){
                long b= factor.get(j);
                if(a*b>n){
                    continue;
                }
                for(int k=0;k< factor.size();k++){
                    long c=factor.get(k);
                    if(a*b*c==n){
                        count++;
                    }
                }
            }
        }
        System.out.println(count);
    }
}

在这里插入图片描述

举报

相关推荐

0 条评论