一块钱购物网站,2013网站设计,提高网站打开速度的7大秘籍,郑州工作货物摆放
题目描述
小蓝有一个超大的仓库#xff0c;可以摆放很多货物。 现在#xff0c;小蓝有 n 箱货物要摆放在仓库#xff0c;每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向#xff0c;每箱货物的边都必须严格平行于长、宽、高。 小蓝希望所有的…货物摆放
题目描述
小蓝有一个超大的仓库可以摆放很多货物。 现在小蓝有 n 箱货物要摆放在仓库每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向每箱货物的边都必须严格平行于长、宽、高。 小蓝希望所有的货物最终摆成一个大的长方体。即在长、宽、高的方向上分别堆L、W、H的货物满足 nL×W×H。 给定 n请问有多少种堆放货物的方案满足要求。 例如当 n4 时有以下 6 种方案1×1×4、1×2×2、1×4×1、2×1×2、2×2×1、4×1×1。 请问当 n2021041820210418 注意有 16 位数字时总共有多少种方案 提示建议使用计算机编程解决问题。
答案提交
这是一道结果填空的题你只需要算出结果后提交即可。本题的结果为一个整数在提交答案时只填写这个整数填写多余的内容将无法得分。
答案2430
方法一
思路使用数组存入该数字的每一个因子再存入第一个因子的同时也能存入另一个因子最后再枚举因子相乘即可
#includestdio.h
#includemath.hint main()
{long long int n2021041820210418;int count0,sum0,i,j,l;long long int a[1000];//存入因子for(i1;isqrt(n);i)//缩减时间复杂度//ma*b//a和b中一定有一个数字是开平方m的//162*84*4{if(n%i0)//上面的i必须从1开始枚举否则会发生错误因为除数不能为0{a[count]i;long long int zn/i;//存入一个因子的同时把另一个因子也存进去if(z!i)//防止因子重复存入影响后面计算a[count]z;}}for(i0;icount;i){for(j0;jcount;j){for(l0;lcount;l){if(a[i]*a[j]*a[l]n)sum;}}}printf(%d,sum);return 0;
}方法二
思路枚举每一个数字即可不过会运行超时但该题为填空题不影响
#includestdio.hint main()
{long long int n2021041820210418;int count0;for(long long int i1;in;i){for(long long int j1;jn;j){for(long long int l1;ln;l){if(i*j*ln){count;}}}}printf(%d,count);
}