捡了西瓜丢芝麻——注意编程细节
勾股定理,西方称为毕达哥拉斯定理,它所对应的三角形现在称为:直角三角形。
已知直角三角形的斜边是某个整数,并且要求另外两条边也必须是整数。
求满足这个条件的不同直角三角形的个数。
【数据格式】
输入一个整数 n 表示直角三角形斜边的长度。勾股定理,西方称为毕达哥拉斯定理,它所对应的三角形现在称为:直角三角形。
已知直角三角形的斜边是某个整数,并且要求另外两条边也必须是整数。
求满足这个条件的不同直角三角形的个数。
【数据格式】
输入一个整数 n 表示直角三角形斜边的长度。
要求输出一个整数,表示满足条件的直角三角形个数。
例如,输入:
5
程序应该输出:
1
再例如,输入:
100
程序应该输出:
2
再例如,输入:
3
程序应该输出:
0
资源约定:
峰值内存消耗 < 256M
CPU消耗 < 1000ms
要求输出一个整数,表示满足条件的直角三角形个数。
例如,输入:
5
程序应该输出:
1
再例如,输入:
100
程序应该输出:
2
再例如,输入:
3
程序应该输出:
0
资源约定:
n的取值范围[n,10000000)
峰值内存消耗 < 256M
CPU消耗 < 1000ms
初始思路:
for(i=1;i<n;i++){//直角长边for(j=1;j<=i;j++){//直角短边if((i+j>n)){a = i*i;b = j*j;if(a+b==c) ++cnt;}}}
当时这道题乍一看,水题啊!由于最近刷的穷举题多,直接穷举,然后提交了几次之后,结果都是wa,于是乎去找bug,发现忘了等腰直角三角形的情形,于是乎改了,又没有测试就直接取交,几次铩羽而归后,才重视起来,仔细的分析了一下时间复杂度,O(n^2),然而题目输入<10^7,程序运行时间要求为1000ms,必然挂掉”然后就利用直角三角形的三边关系去做,开平方当然会有精度问题,可是很容易的就验证了(当时还窃窃自喜没用这种方法,然而。。。),在这过程中又回顾了Java语言的一些特性:
long 型数据在初始化时应在其后加上后缀L,
float 型数据在初始化时应在其后加上后缀F,
double 型数据在初始化时应在其后加上后缀D,还有如果:
int x = in.nextInt();
long y = x * x;
System.out.println(y);
如果输入x为10000000,则得到的y不是100000000000000,而是276447232,因为x*x先运算,然后将其值赋给y。所以在赋值运算时,赋值号两侧数据的类型最好相同。无非必要不要去做类型转换,无论是个人强制转换还是系统的自动转换.
import java.util.Scanner;public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner in = new Scanner(System.in);int x = in.nextInt();long y = x * x;System.out.println(y);while(in.hasNext()){long n = in.nextLong();long aa,bb,cc = n*n,a,b,c = n;int cnt = 0;long t1 = System.currentTimeMillis();for(long i=1;i<n;i++){a = i;aa = i*i;bb = cc-aa;b = (int)Math.sqrt(bb);//会有精度问题if(b*b==bb){//验证是否有精度问题cnt ++;}}System.out.println(cnt/2);long t2 = System.currentTimeMillis();//System.out.println("Time cost:"+(t2-t1));}}}
捡了西瓜丢芝麻——注意编程细节相关推荐
- 硅谷来信《西瓜与芝麻》
一次偶然的机会听了吴军老师的硅谷来信中的第21封信<西瓜与芝麻>对我的触动很大,让我对境界.眼光.思维.格局有了一个更为深入的了解.我反思了一下我的人生,好像一直都在做一些捡芝麻丢西瓜的事 ...
- WinForm编程细节
原作者:黄启清(www.cnblogs.com/happyqq) 日期:2008-4-19 这是我在Cnblogs里面的第一篇原创文章,以前在百度贴吧里面写的都是网络安全方面的文章. 希望Cnblog ...
- 非洲瓜哇JAVA布的特点_java语言的基本特性以及编程细节
前言 java语言的学习是一个体系,所以如果想要对java的编程有一个很精通的一个掌握,它离不开很多基础的知识点,比如JVM的原理.java多线程并发编程.数据结构等等.所以我这里对我学习的java的 ...
- C++基础::shared_ptr 编程细节(三)
C++基础::shared_ptr 编程细节(一) C++基础::shared_ptr 编程细节(二) C++基础::shared_ptr 编程细节(三) boost::shared_ptr std: ...
- C++基础::shared_ptr 编程细节(二)
C++基础::shared_ptr 编程细节(一) C++基础::shared_ptr 编程细节(二) C++基础::shared_ptr 编程细节(三) *sp 与 sp.get() sp.get( ...
- C++基础::shared_ptr 编程细节(一)
C++基础::shared_ptr 编程细节(一) C++基础::shared_ptr 编程细节(二) C++基础::shared_ptr 编程细节(三) 智能指针是c++ 中管理资源的一种方式,用智 ...
- 西瓜创客和核桃编程之间,哪个更靠谱?西瓜创客一年学费多少?
说起少儿编程平台,很多人都会想到西瓜创客和核桃编程,这两个在行业内知名度都很高,现在不少的家长想报少儿编程的课程,但是对于现在市面上的编程课都不是很了解,今天我们就来聊聊西瓜创客和核桃编程有什么区别? ...
- Partially Labeled Dirichlet Allocation(PLDA)算法的理解与编程细节(Java)
本文作者:合肥工业大学 电子商务研究所 钱洋 email:1563178220@qq.com . 内容可能有不到之处,欢迎交流. 未经本人允许禁止转载. 文章目录 论文来源 模型 公式推理 编程细节 ...
- ALSA编程细节分析
[Loong]:之前写过基于ALSA的WAV播放录音程序,见http://blog.csdn.net/sepnic/archive/2011/01/14/6140824.aspx.现在本想好好整理一下 ...
最新文章
- 【 C 】深入了解递归
- java获得一个空闲端口号_Python找出9个连续的空闲端口
- svn教程----TortoiseSVN客户端
- OpenCV在矩阵上进行Mask 运算operations
- nodejs和Vue和Idea
- Zabbix如何监控Windows机器
- Android Jenkins自动化构建之路
- Eclipse快捷键-方便查找
- 从动态表单得到的一些思考
- MySQL不能使用/tmp
- 模糊综合评价法(FCE)-快速理解
- Ps照片一键生成彩铅马克笔手绘效果图方法
- 项目评价指标 误差回归_了解回归误差指标
- 用c/c++和Java语言实现庞加莱回归
- Phoenix FD Maya 软件插件
- 【实拍电机】保时捷PPE平台解析
- 第三方支付业务及典型的对账过程
- python描述性统计离散型变量_数据的描述性统计(Python3 实现)
- MongoDB 写安全(Write Concern)
- 浅谈MIL、SIL、PIL、HIL
热门文章
- 狄利克雷卷积学习记录
- 树莓派连接人体感应模块HC-SR501
- HuskyLens人工智能摄像头
- MATLAB Simulink开发ROS无人车与机器人应用 详细教程
- (实测可用)STM32CubeMX教程-STM32L431RCT6开发板研究串口通信(RS485)
- react native 研究
- 台式机外接显示器后没有声音
- 教大模型自己跳过“无用”层,推理速度×3性能不变,谷歌MIT这个新方法火了...
- Icon glyphs 小图标命名收藏
- Python+Django+Mysql实现购物商城推荐系统 基于用户、项目的协同过滤推荐购物商城系统 网络购物推荐系统 代码实现 源代码下载