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

上一题:2、直线(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);
    }
}

下一题:4、路径(JavaA组)
在这里插入图片描述

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值