当前位置: 首页 > news >正文

蓝桥杯每日一题----货物摆放

题目

分析

上来一看,三个for循环,从1到n,寻找满足lwh=n的个数,但是这样根本跑不出来答案,n太大了,1e15的级别,O(n)的时间复杂度都不行,更何况是O(n^3)。
尝试降低时间复杂度很难,可以尝试降低数据规模。
插入理论:影响代码运行时间的两个因素算法时间复杂度和数据规模。
我们可以观察一下,满足lwh=n的l,w和h有什么特点。他们肯定是n的因子,那么我们只需要遍历n的因子就可以了。怎么求n的因子呢?一个for循环遍历即可,时间复杂度是O(sqrt(n)),满足要求。

解题

第一步:
求n的因子的代码如下,

long n = 2021041820210418l;Set<Long> set = new HashSet<Long>();for(long i = 1;i <= n / i;i++) {if(n%i==0) {set.add(i);set.add((n/i));}}

因为找到一个小于sqrt(n)的因子i,必然也能根据i找到大于sqrt(n)的另一个因子,即n/i。
第二步:
遍历n的因子

long ans = 0;for(Long a:set)for(Long b:set)for(Long c:set)if(a*b*c==n) ans++;

第三步:
输出答案

System.out.println(ans);	

完整代码:

import java.util.HashSet;
import java.util.Set;public class 货物摆放 {
public static void main(String[] args) {long n = 2021041820210418l;//2430Set<Long> set = new HashSet<Long>();for(long i = 1;i <= n / i;i++) {if(n%i==0) {set.add(i);set.add((n/i));}}long ans = 0;for(Long a:set)for(Long b:set)for(Long c:set)if(a*b*c==n) ans++;System.out.println(ans);	
}
}

相关文章:

  • web架构师编辑器内容-编辑器组件图层面板功能开发-锁定隐藏、键盘事件功能的开发
  • 中级Python面试问题
  • 概率论与数理统计————3.随机变量及其分布
  • STM32F103标准外设库——中断应用/事件控制器(六)
  • 线性代数的学习和整理23:用EXCEL计算 向量/向量组的点乘 (内积) (建设ing)
  • 数据集成时表模型同步方法解析
  • postman后端测试时invalid token报错+token失效报错解决方案
  • 走迷宫(c语言)
  • Firefox 100 正式发布
  • 接口自动化测试持续集成,Soapui接口功能测试参数化
  • npm install 卡住不动的六种解决方法
  • Docker部署Traefik结合内网穿透远程访问Dashboard界面
  • STM32之OLED显示
  • YoloV8改进策略:Agent Attention|Softmax与线性注意力的融合研究|有效涨点|代码注释与改进|全网首发(唯一)
  • OpenHarmony基于HDF简单驱动开发实例
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • Angular6错误 Service: No provider for Renderer2
  • Java编程基础24——递归练习
  • js ES6 求数组的交集,并集,还有差集
  • JS+CSS实现数字滚动
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • SQLServer插入数据
  • vue:响应原理
  • VuePress 静态网站生成
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 力扣(LeetCode)21
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (java)关于Thread的挂起和恢复
  • (Java数据结构)ArrayList
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (译) 函数式 JS #1:简介
  • (转)Google的Objective-C编码规范
  • .net core 控制台应用程序读取配置文件app.config
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .NET学习教程二——.net基础定义+VS常用设置
  • ?
  • @ConditionalOnProperty注解使用说明
  • @test注解_Spring 自定义注解你了解过吗?
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • [20170728]oracle保留字.txt
  • [android学习笔记]学习jni编程
  • [C语言]一维数组二维数组的大小
  • [ESP32] 编码旋钮驱动
  • [Head First设计模式]策略模式
  • [HNOI2018]排列