勾股定理,西方称为毕达哥拉斯定理,它所对应的三角形现在称为:直角三角形。

已知直角三角形的斜边是某个整数,并且要求另外两条边也必须是整数。

求满足这个条件的不同直角三角形的个数。

【数据格式】
输入一个整数 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));}}}

捡了西瓜丢芝麻——注意编程细节相关推荐

  1. 硅谷来信《西瓜与芝麻》

    一次偶然的机会听了吴军老师的硅谷来信中的第21封信<西瓜与芝麻>对我的触动很大,让我对境界.眼光.思维.格局有了一个更为深入的了解.我反思了一下我的人生,好像一直都在做一些捡芝麻丢西瓜的事 ...

  2. WinForm编程细节

    原作者:黄启清(www.cnblogs.com/happyqq) 日期:2008-4-19 这是我在Cnblogs里面的第一篇原创文章,以前在百度贴吧里面写的都是网络安全方面的文章. 希望Cnblog ...

  3. 非洲瓜哇JAVA布的特点_java语言的基本特性以及编程细节

    前言 java语言的学习是一个体系,所以如果想要对java的编程有一个很精通的一个掌握,它离不开很多基础的知识点,比如JVM的原理.java多线程并发编程.数据结构等等.所以我这里对我学习的java的 ...

  4. C++基础::shared_ptr 编程细节(三)

    C++基础::shared_ptr 编程细节(一) C++基础::shared_ptr 编程细节(二) C++基础::shared_ptr 编程细节(三) boost::shared_ptr std: ...

  5. C++基础::shared_ptr 编程细节(二)

    C++基础::shared_ptr 编程细节(一) C++基础::shared_ptr 编程细节(二) C++基础::shared_ptr 编程细节(三) *sp 与 sp.get() sp.get( ...

  6. C++基础::shared_ptr 编程细节(一)

    C++基础::shared_ptr 编程细节(一) C++基础::shared_ptr 编程细节(二) C++基础::shared_ptr 编程细节(三) 智能指针是c++ 中管理资源的一种方式,用智 ...

  7. 西瓜创客和核桃编程之间,哪个更靠谱?西瓜创客一年学费多少?

    说起少儿编程平台,很多人都会想到西瓜创客和核桃编程,这两个在行业内知名度都很高,现在不少的家长想报少儿编程的课程,但是对于现在市面上的编程课都不是很了解,今天我们就来聊聊西瓜创客和核桃编程有什么区别? ...

  8. Partially Labeled Dirichlet Allocation(PLDA)算法的理解与编程细节(Java)

    本文作者:合肥工业大学 电子商务研究所 钱洋 email:1563178220@qq.com . 内容可能有不到之处,欢迎交流. 未经本人允许禁止转载. 文章目录 论文来源 模型 公式推理 编程细节 ...

  9. ALSA编程细节分析

    [Loong]:之前写过基于ALSA的WAV播放录音程序,见http://blog.csdn.net/sepnic/archive/2011/01/14/6140824.aspx.现在本想好好整理一下 ...

最新文章

  1. 【 C 】深入了解递归
  2. java获得一个空闲端口号_Python找出9个连续的空闲端口
  3. svn教程----TortoiseSVN客户端
  4. OpenCV在矩阵上进行Mask 运算operations
  5. nodejs和Vue和Idea
  6. Zabbix如何监控Windows机器
  7. Android Jenkins自动化构建之路
  8. Eclipse快捷键-方便查找
  9. 从动态表单得到的一些思考
  10. MySQL不能使用/tmp
  11. 模糊综合评价法(FCE)-快速理解
  12. Ps照片一键生成彩铅马克笔手绘效果图方法
  13. 项目评价指标 误差回归_了解回归误差指标
  14. 用c/c++和Java语言实现庞加莱回归
  15. Phoenix FD Maya 软件插件
  16. 【实拍电机】保时捷PPE平台解析
  17. 第三方支付业务及典型的对账过程
  18. python描述性统计离散型变量_数据的描述性统计(Python3 实现)
  19. MongoDB 写安全(Write Concern)
  20. 浅谈MIL、SIL、PIL、HIL

热门文章

  1. 狄利克雷卷积学习记录
  2. 树莓派连接人体感应模块HC-SR501
  3. HuskyLens人工智能摄像头
  4. MATLAB Simulink开发ROS无人车与机器人应用 详细教程
  5. (实测可用)STM32CubeMX教程-STM32L431RCT6开发板研究串口通信(RS485)
  6. react native 研究
  7. 台式机外接显示器后没有声音
  8. 教大模型自己跳过“无用”层,推理速度×3性能不变,谷歌MIT这个新方法火了...
  9. Icon glyphs 小图标命名收藏
  10. Python+Django+Mysql实现购物商城推荐系统 基于用户、项目的协同过滤推荐购物商城系统 网络购物推荐系统 代码实现 源代码下载