蓝桥杯真题:货物摆放

import java.util.ArrayList;public class Main {public static void main(String args[]) {//常规思路/*long num = 2021041820210418l;int count = 0;for ( long i = 1 ; i < num ; i++ ){for ( long j = 1 ; j < num ; j++ ){for ( long k = 1 ; k < num ; k++ ){if ( i * j *um ){count++;}}}}*///显而易见,这个算法的时间复杂的非常的大。计算机想要算出结果,可能需要几天的时间//所以要另辟蹊径//想想,三个数相乘要等于num,那么这三个数是不是都是num的因子,都能被num整除呢?//上方的算法,三层for循环都是从1遍历到num,其中很多组合都是无效的//简而言之,这些无效组合中不能同时被num整除,而有效的组合,任何一个数都能被num整除//所以,如果我们能从num的因子里面去找组合,是不是时间复杂度就要小许多?long num = 2021041820210418l;//如果直接赋值,计算机默认数字是int类型,会报错。所以要在后面加'l',转换为long类型//定义一个ArrayList数组,存放num的因子ArrayList<Long> arr = new ArrayList<>();//从1开始遍历,遍历到num的平方根结束。不需要把num遍历一遍,这样算法复杂都也非常大,重点看for循环里面的语句for ( long i = 1 ; i <= Math.sqrt(num) ; i++ ){if ( num % i == 0 ){arr.add(i);     //如果能被整除,就放到arr数组中//!!!重点在这里,当i能被num整除的情况下,求出num关于i的另外一个除数n//这样,for循环不需要从1遍历到num。可以通过较小的因子,求出另外一个较大的因子long n = num / i;//如果num = Math.sqrt(num)*Math.sqrt(num),那么由较小的因子求较大的因子时,会重复,要排除这种情况if ( n != i ){      //当然,此时num,不会出现这种情况。如果num=4,就会出现这种情况arr.add(n);     //将较大的因子放入arr数组}}}//System.out.println(arr.size());   //num一共有128个因子//三层for循环依次遍历即可。 128^3 = 2097152 计算机完全可以在短时间内算出结果int count = 0;for ( long i : arr ){for ( long j : arr ){for ( long k : arr ){if ( i * j * k == num ){count++;}}}}System.out.println(count);}
}

不一定要每一个乘起来判断,也可以找到所有因数再一个一个遍历。这样可以减少时间复杂度。在数据大的时候可以这么算

import java.util.Scanner;
import java.util.ArrayList;
// 1:无需package
// 2: 类名必须Main, 不可修改//先求出该数的公因所有公因子,在循环遍历
//求出较小数后,使用除法;因此求到该数的平方根就行了
public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);long num=2021041820210418l;ArrayList<Long> arr=new ArrayList<>();for(long i=1;i<=Math.sqrt(num);i++){if(num%i==0){arr.add(i);long n=num/i;if(n!=i){arr.add(n);}}}long count=0;for(long i:arr){for(long j:arr){for(long k:arr){if(i*j*k==num){count++;}}}}System.out.print(count);scan.close();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/589535.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zIO: Accelerating IO-Intensive Applications with Transparent Zero-Copy IO——论文泛读

OSDI 2022 Paper 论文阅读笔记整理 问题 零拷贝IO一直是一个长期的性能目标。复制会引入内存和CPU开销&#xff0c;限制IO密集型应用程序的性能。IO数据复制在IO堆栈内、通过其应用程序编程接口&#xff08;API&#xff09;和应用程序内执行。现有工作的重点是开发零拷贝IO A…

[Python学习篇] Python创建项目

新建项目 打开开发工具 PyCharm 选择 New Project 目录结构如下 运行 hello world 选中项目&#xff0c;右键 New -> Python File 进行创建文件 运行项目

从redux的基本概念渐进式理解redux/toolkit的用法

概念 Redux toolkit是帮助提高redux开发效率的一个库 React-redux 是将React和Redux toolkit绑定在一起的一个库 action 是一个对象,里面有一个type属性 action creator是一个函数,这个函数可以返回上面的action对象。 reducer 是一个函数,接受两个参数(initilastate, acti…

基于springboot+vue实现的酒店客房管理系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;spring…

反射Reflection

1. 反射的出现背景 Java 程序中&#xff0c;所有的对象都有两种类型&#xff1a;编译时类型和运行时类型&#xff0c;而很多时候对象的编译时类型和运行时类型不一致。 例如&#xff1a;某些变量或形参的声明类型是 Object 类型&#xff0c;但是程序却需要调用该对象运行时类型…

Java编程使用CGLIB动态代理介绍与实战演示

文章目录 前言技术积累核心概念主要功能适用场景与JDK动态代理的对比 实战演示定义待代理的目标类实现MethodInterceptor接口使用代理对象 测试结果写在最后 前言 在Java编程中&#xff0c;CGLIB (Code Generation Library) 是一个强大的高性能代码生成库&#xff0c;它通过生…

WebGIS 地铁交通线网 | 图扑数字孪生

数字孪生技术在地铁线网的管理和运维中的应用是一个前沿且迅速发展的领域。随着物联网、大数据、云计算以及人工智能技术的发展&#xff0c;地铁线网数字孪生在智能交通和智慧城市建设中的作用日益凸显。 图扑软件基于 HTML5 的 2D、3D 图形渲染引擎&#xff0c;结合 GIS 地图…

[RK3588-Android12] 调试MIPI-双通道-压缩屏(Video Mode/MIPI Dphy 8Lane/DSC 144HZ)

问题描述 被测屏幕&#xff1a;小米Pad6 分辨率&#xff1a;1800X2880 模式&#xff1a;Video Mode/MIPI Dphy 8Lane/DSC 144HZ PPS: 11 00 00 89 30 80 0B 40 03 84 00 14 01 C2 01 C2 02 00 01 F4 00 20 01 AB 00 06 00 0D 05 7A 06 1A 18 00 10 F0 03 0C 20 00 06 0B 0B 33…

【c++】STl-list使用list模拟实现

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;c_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1. list的介绍及使用 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 …

【智能算法】蜜獾算法(HBA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2021年&#xff0c;FA Hashim等人受到自然界中蜜獾狩猎行为启发&#xff0c;提出了蜜獾算法&#xff08;(Honey Badger Algorithm&#xff0c;HBA&#xff09;。 2.算法原理 2.1算法思想 蜜獾以其…

pytest--python的一种测试框架--接口测试

接口测试 工具&#xff1a; POSTMAN&#xff1b; 接口选择&#xff1a; 豆瓣电影&#xff0c;进制数据 POSTMAN下载&#xff1a; 1.POSTMAN官网&#xff1a;https://www.postman.com/products/&#xff1b; 2.点product选Download Postman 下载完之后双击打开就可以用的。…

软件设计师27--规范化理论

软件设计师27--规范化理论 考点1&#xff1a;规范化理论基本概念函数依赖规范化理论--Amstrong公理体系候选键主属性与非主属性例题&#xff1a; 考点2&#xff1a;范式判断规范化理论规范化理论 - 范式例题&#xff1a; 考点3&#xff1a;范式分解保持函数依赖分解无损分解模式…