闲聊蓝桥杯JAVA - 四平方和
闲聊蓝桥杯JAVA - 四平方和
D:这道题有一点复杂,看了
四平方和四平方和定理,又称为拉格朗日定理:
每个正整数都可以表示为至多4个正整数的平方和。
如果把0包括进去,就正好可以表示为4个数的平方和。比如:
5 = 0^2 + 0^2 + 1^2 + 2^2
7 = 1^2 + 1^2 + 1^2 + 2^2
(^符号表示乘方的意思)对于一个给定的正整数,可能存在多种平方和的表示法。
要求你对4个数排序:
0 <= a <= b <= c <= d
并对所有的可能表示法按 a,b,c,d 为联合主键升序排列,最后输出第一个表示法程序输入为一个正整数N (N<5000000)
要求输出4个非负整数,按从小到大排序,中间用空格分开例如,输入:
5
则程序应该输出:
0 0 1 2再例如,输入:
12
则程序应该输出:
0 2 2 2再例如,输入:
773535
则程序应该输出:
1 1 267 838
Z:这道题有一个简单,但是不是很优的做法。
public static void main(String[] args) {Scanner input =new Scanner(System.in);int num = input.nextInt();double maxNum= Math.sqrt(5000000);for (int i = 0; i <maxNum; i++) {for (int j = i; j < maxNum; j++) {for (int k = j; k < maxNum; k++) {int l=(int)Math.sqrt(num-i*i-j*j-k*k);if(i*i+j*j+k*k+l*l==num){System.out.println(i+" "+j+" "+k+" "+l);return;}}}} }
M:为什么要double maxNum= Math.sqrt(5000000);
?
Z:尽力缩小最大值的范围,因为是平方,最大不会超过开方的数。
M:暴力破解为什么每次从上个数开始?
for (int i = 0; i <maxNum; i++) {for (int j = i; j < maxNum; j++) {for (int k = j; k < maxNum; k++) {
Z:还是一样,因为数字逐个递增,尽量减少不必要的循环。
M:那为什么只循环三个数呢?
Z:因为只要三个数确定,最后一个数也就确定了。算出那个数,并且进行校验即可。
int l=(int)Math.sqrt(num-i*i-j*j-k*k);if(i*i+j*j+k*k+l*l==num){System.out.println(i+" "+j+" "+k+" "+l);return;}
M:总结这道题目,主要就是尽量减少循环的次数。
1.减少循环的最大值。2.for循环从上个数开始。3.第4个数通过其他3个数确定。
最后进行验证。
闲聊蓝桥杯JAVA - 四平方和相关推荐
- 闲聊蓝桥杯JAVA - 罗马数字
罗马数字 D:这道题解法不难,但是主要是研究对于特殊值我们的处理方式: 古罗马帝国开创了辉煌的人类文明,但他们的数字表示法的确有些繁琐,尤其在表示大数的时候,现在看起来简直不能忍受,所以在现代很少使用 ...
- 闲聊蓝桥杯JAVA - 路径之谜
路径之谜 D:来一道通用的题目,路径行走 路径之谜小明冒充X星球的骑士,进入了一个奇怪的城堡. 城堡里边什么都没有,只有方形石头铺成的地面.假设城堡地面是 n x n 个方格.[如图1.png]所示. ...
- 闲聊蓝桥杯JAVA - 填字母游戏
填字母游戏 D:今天是一道很有游戏感的题目(只是蹭LOL热度): 标题:填字母游戏小明经常玩 LOL 游戏上瘾,一次他想挑战K大师,不料K大师说: "我们先来玩个空格填字母的游戏,要是你不能 ...
- 2016年 第7届 蓝桥杯 Java B组 省赛解析及总结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:部分 ...
- 2016蓝桥杯b组java试题及答案_2016年第七届蓝桥杯java B组省赛试题
2016年第七届蓝桥杯java B组省赛试题 1-3.结果填空 4-5.代码填空 6-7.结果填空 8-10.程序设计 1.煤球数目 (结果填空) 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, ...
- 蓝桥杯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月)-官方讲解视频 ...
最新文章
- bash shell命令(2)
- JavaScript学习笔记(备忘录)
- matlab找数据的转账点,nodejs开发EOS转账服务的两种方案
- 前端学习(2713):重读vue电商网站33之实现首页路由重定向
- Linux 安装 jdk ( 两种方式 )
- 配置jdk1.7的环境变量
- 【每日算法Day 85】图解算法:一行代码解决约瑟夫环的变体
- php课设报告致谢_奇安信CERT发布1月安全监测报告:需警惕这19个高危漏洞
- PHP正则表达式检查日期是YYYY-MM-DD格式
- h5页面如何切图_前端切图H5/网页切图/移动自适应H5/切图开发/H5响应式
- maven添加ojdbc6.jar包
- 视频:使用chrome谷歌浏览器下载任意网页上的视频
- win7没有显示wifi连接到服务器,Win7笔记本电脑搜不到无线网络(Wifi)怎么办?...
- 写字机器人制作教程 midt-bot
- 2020最新中高阶Android面试题总结-上(附解题思路)
- 一学期c语言的学习总结
- oracle jmf下载,Ubuntu/Linux下安装JMF播放媒体文件
- kali liunx使用心得之命令行模式下如何配置连接无线网络
- 京东移动端首页-流式布局
- weui学习总结——1、weui表单常用标签
热门文章
- C#中{ get; set; }写法是什么意思
- Unity3d 使用OpenCV插件报错:Unsafe code may only appear if compiling with /unsafe.解决方法
- 人大计算机应用同等学力申硕,人民大学同等学力申硕
- ultraedit反编译c语言,把Ultraedit变成一个IDE(C++)
- truffle init/unbox时遇到 Got error: connect ECONNREFUSED 151.101.196.133:443. Please check the format
- Microsoft Word 2010 - 超链接
- 企业网站为何喜欢选择织梦系统?织梦cms的好处有哪些?
- 你熟悉他们使用的计算机软件吗,软件英文怎么说
- linux qt “QXcbIntegration: Cannot create platform OpenGL context, neither GLX nor EGL are enable“
- Python Folium 绘制交互式地图