java 货物摆放 —— 蓝桥

题目描述

小蓝有一个超大的仓库,可以摆放很多货物。

  现在,小蓝有 nn 箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、宽、高。

小蓝希望所有的货物最终摆成一个大的长方体。即在长、宽、高的方向上分别堆 LL、WW、HH 的货物,满足 n = L \times W \times Hn=L×W×H。

给定 nn,请问有多少种堆放货物的方案满足要求。

  例如,当 n = 4n=4 时,有以下 66 种方案:1×1×4、1×2×2、1×4×1、2×1×2、2 × 2 × 1、4 × 1 × 11×1×41×2×21×4×12×1×22×2×14×1×1。

请问,当 n = 2021041820210418n=2021041820210418 (注意有 1616 位数字)时,总共有多少种方案?

提示:建议使用计算机编程解决问题。

答案提交

  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M
复制代码
/*如果一个数的约数在其开平方的右边 则必然会存在一个约数在其开平方的左边 所以
判断一个数是否为质数 只需要观察在其2 到 开平方数中间是否含有约数即可
假设a*b=x
如果a<(根号x)而且b<(根号x)那么一定有a*b<(根号x)*(根号x)
如果a>(根号x)而且b>(根号x)那么一定有a*b>(根号x)*(根号x)
所以如果两个因数不相等的话,那么两个因数一定是一个比(根号x)大,一个比(根号x)小。
*/
import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;
public class suan1{
    public static void main(String[] args) {
        long number=2021041820210418l;
        List<Long> arr = new ArrayList<>();
        for(long i=1;i<Math.sqrt(number);i++) {    //找它的约数 只需要求解到开平方出即可 即2 —— 开平方处 Math.sqrt()
            if(number%i==0) {
                arr.add(i);
                arr.add(number/i);
            }
        }
        int count=0;
        for(int i=0;i<arr.size();i++) {
            for(int j=0;j<arr.size();j++) {
                for(int k=0;k<arr.size();k++) {
                    if(arr.get(i)*arr.get(j)*arr.get(k)==number) {    //get() 方法通过索引值获取动态数组中的元素
                        count++;
                    }
                }
            }
        }
        System.out.println(count);
    }
}
复制代码

 

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