题目描述
小蓝有一个超大的仓库,可以摆放很多货物。
现在,小蓝有 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×4、1×2×2、1×4×1、2×1×2、2×2×1、4×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); } }
标签:约数,开平方,java,摆放,蓝桥,货物,根号 From: https://www.cnblogs.com/mcpf/p/17029256.html