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

题目

分析

上来一看,三个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;//2430
	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));
		}
	}
	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);	
}
}

相关推荐

  1. 货物摆放

    2024-01-17 13:48:01       56 阅读
  2. 货物摆放

    2024-01-17 13:48:01       48 阅读
  3. 每日(python)

    2024-01-17 13:48:01       62 阅读
  4. 每日(BFS)

    2024-01-17 13:48:01       41 阅读
  5. 每日(dfs)

    2024-01-17 13:48:01       49 阅读
  6. 每日:扫雷

    2024-01-17 13:48:01       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-17 13:48:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-17 13:48:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-17 13:48:01       87 阅读
  4. Python语言-面向对象

    2024-01-17 13:48:01       96 阅读

热门阅读

  1. C Primer Plus(第六版)11.13 编程练习 第6题

    2024-01-17 13:48:01       45 阅读
  2. elasticsearch查询

    2024-01-17 13:48:01       57 阅读
  3. Kotlin Async

    2024-01-17 13:48:01       52 阅读
  4. Python 发微信:实现自动化沟通的利器

    2024-01-17 13:48:01       53 阅读
  5. sqlserver2012 跨服务器查询

    2024-01-17 13:48:01       67 阅读
  6. ARCGIS PRO SDK 地图图层单一符号化_____面图层

    2024-01-17 13:48:01       58 阅读
  7. Flutter开发 键盘弹起导致底部溢出问题

    2024-01-17 13:48:01       57 阅读
  8. C#学习教程

    2024-01-17 13:48:01       58 阅读
  9. 黑洞数(C语言)

    2024-01-17 13:48:01       52 阅读
  10. 快速了解STM32的ADC功能,从入门到精通

    2024-01-17 13:48:01       55 阅读
  11. Github Copilot 的使用方法和快捷键*

    2024-01-17 13:48:01       77 阅读
  12. Nue.js 是什么?

    2024-01-17 13:48:01       47 阅读
  13. What is `HttpServletRequestWrapper` does?

    2024-01-17 13:48:01       64 阅读