货物摆放 (蓝桥杯) JAVA
题目描述
小蓝有一个超大的仓库,可以摆放很多货物。 现在,小蓝有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 数据的庞大,可以用 long 来储存,如果直接用三重 for 循环 来解题的话,大概需要 2h左右。
所以纯暴力破解是不讨好的,需要在此基础上添加一点点技巧。
由例题可看出:n = 4 的时候,L, W, H内出现的都是 n 的约数,即都能被 n 整除。所以我们不妨先寻找 n 的约数,再暴力破解。
1.寻找 n 的约数的代码如下:
for(long i = 1; i*i <= n;i ++) {if(n % i == 0) {s.add(i);if(n / i != i) s.add(n / i);}}
即:我们在1 ~ n^(1/2) 这个区间内寻找约数,由于有s.add(n / i) 的存在后半部分的约数也一起存储了(例如 6 % 2 == 0,存入 2,6 / 2 = 3,也一起存入),我们没必要查找后半部分(如果查找则会重复)。
上述查找约数的部分大概需要循环 10^8 左右,计算机 1 s 左右就能办完。
2.需要用一个容器储存这些约数,我用的是 list 容器,这个还是比较好用的。
3.由于算式不能重复,我们直接利用三重for循环筛选符合体条件的约数即可,由于约数不是太多,三重for循环也用不了几秒时间。
理论成立完整代码如下:
import java.util.ArrayList;
import java.util.List;public class Main {public static void main(String[] args){long n = 2021041820210418L;List s = new ArrayList<Long>();for(long i = 1; i * i <= n; i ++) {if(n % i == 0) {s.add(i);if(n / i != i) s.add(n / i);}}int sum = 0;for(int i = 0; i < s.size(); i ++)for(int j = 0; j < s.size(); j ++)for(int k = 0; k < s.size(); k ++) if((long)s.get(i) * (long) s.get(j) * (long) s.get(k) == n) sum ++;System.out.print(sum);}
}
货物摆放 (蓝桥杯) JAVA相关推荐
- 2021年 第12届 蓝桥杯 Java B组 省赛真题详解及小结【第1场省赛 2021.04.18】
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[题目下载.2013年(第4届)~2020年(第11届)] CSDN 蓝桥杯 专栏 2013年 第04届 蓝桥杯 Java B组 省赛真题详解及小结 ...
- 2018年 第09届 蓝桥杯 Java B组 决赛真题详解及小结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
- 2020年 第11届 蓝桥杯 Java B组 决赛真题详解及小结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
- java蓝桥杯凑算是,第七届蓝桥杯JAVA B组真题解析-凑算式(第三题)
第七届蓝桥杯JAVA B组真题解析-凑算式(第三题) 凑算式 A+B/C+DEF/GHI =10 (如果显示有问题,可以参见[图1.jpg]) 这个算式中AI代表19的数字,不同的字母代表不同的数字. ...
- 蓝桥杯Java历年真题与答案_蓝桥杯大赛java历年真题及答案整理(闭关一个月呕心沥血整理出来的)...
蓝桥杯大赛java历年真题及答案整理(闭关一个月呕心沥血整理出来的) 1蓝桥杯 java 历年真题及答案整理(闭关一个月,呕心沥血整理出来的)1. 算法是这样的,如果给定 N 个不同字符,将这 N 个 ...
- 2015年 第06届 蓝桥杯 Java B组 决赛真题详解及小结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
- 2016年 第07届 蓝桥杯 Java B组 决赛真题详解及小结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
- 2017年 第08届 蓝桥杯 Java B组 决赛真题详解及小结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 ...
- 2019年 第10届 蓝桥杯 Java B组 决赛真题详解及小结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
最新文章
- Google浏览器(您的连接不是私密连接)解决方案
- 2018-2019-1 20165226 《信息安全系统设计基础》第4周学习总结
- 可能是最简单易懂的人工智能入门书
- 微软Edge扩展工具箱旨在将Chrome扩展带至Edge
- python处理文件夹_python文件及文件夹操作
- 漫谈CGI FastCGI WSGI
- SQLServer之深度分析跟踪
- werkzeug routing.Rule
- ionic 组件之二维码扫描
- Android Media Framework(1): 总纲
- 让部署到服务器上的springboot项目持续运行(nohup)
- LINUX下使用scp命令与其他机器远程交换文件
- Android显示PDF文件之PDFviewer
- 【深度学习】《动手学深度学习》环境配置
- mac切换网卡|IP
- PC端如何双开/多开微信(实测可用)
- 日常问题(bug)反馈/回复的标准格式
- Linux查看系统运行时间
- Elasticsearch索引分片的数量及大小分配策略
- 软件测试行业女生真的没有一席之地了吗,还能入行软件测试吗?
热门文章
- 明朝开国第一重臣李善长长子李祺之长子李芳后裔在松滋
- 登陆凯叔讲故事显示未链接服务器,凯叔用户暴涨的秘密
- Metronic 使用到的开源插件汇总
- FA-PEG-Silane 叶酸-聚乙二醇-硅烷 Silane-PEG2000-FA,PEG分子量2000
- 985南京大学,招生目录新增两个学院招收计算机研究生!
- 苏宁计算机笔试,苏宁笔试经验笔试写作
- HFSS学习记录——6.2扫频设置(Edit Frequency Sweep)
- 在eclipse中导入jor(开源报表)工程
- 大型圆弧怎么处理_大型弧形墙施工方法
- select 标签自定义样式