[蓝桥杯2021初赛] 货物摆放

题目描述:

小蓝有一个超大的仓库,可以摆放很多货物。
现在,小蓝有n 箱货物要摆放在仓库,每箱货物都是规则的正方体。
小蓝规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、宽、高。
小蓝希望所有的货物最终摆成一个大的立方体。即在长、宽、高的方向上分别堆L、W、H 的货物,满足n = L × W × H。
给定n,请问有多少种堆放货物的方案满足要求。
例如,当n = 4 时,有以下6 种方案:1×1×4、1×2×2、1×4×1、2×1×2、2×2×1、4×1×1。
请问,当n = 2021041820210418 (注意有16 位数字)时,总共有多少种
方案?
提示:建议使用计算机编程解决问题。


数组:

  • n = L × W × H,故先找n的因数,并存到数组;
  • 三层for进行暴力循环。
复制代码
public class Main {
    public static void main(String[] args) {
        long n = 2021041820210418L;
        long ar[] = new long[1000];
        
        int ars = 0;//数组下标
        int gs = 0;//个数
        
        for(long i = 1;i*i<=n;i++) {
            if(n%i==0) {//能被整除的数是因数
                ar[ars++] = i;
                if(i != n/i) {
                    ar[ars++] = n/i;
                }
            }
        }
        
        for(int i = 0;i < ars;i++) {
             for(int j = 0;j < ars;j++) {
                 for(int k = 0;k < ars;k++) {
                        if(ar[i]*ar[j]*ar[k] ==n) {
                            gs++;
                        }
                    }
             }
        }
        System.out.println(gs);
    }
}
复制代码

 


链表:

复制代码
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        long n = 2021041820210418L;
        List<Long> ars =new ArrayList<>();
        int gs = 0;//个数
        
        for(long i = 1;i*i<=n;i++) {
            if(n%i==0) {
                ars.add(i);
                ars.add(n/i);//list会去重,不用判断i==n/i
            }
        }
        for(int i = 0;i < ars.size();i++) {
             for(int j = 0;j < ars.size();j++) {
                 for(int k = 0;k < ars.size();k++) {
                        if(ars.get(i)*ars.get(j)*ars.get(k)==n) {
                            gs++;
                        }
                    }
             }
        }
        System.out.println(gs);
    }
}
复制代码

 

posted @   墨染流云  阅读(259)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示