一、题目描述

One day, WXYZ got a wooden stick, he wanted to split it into three sticks and make a right-angled triangle. You will be given the length of the stick, and your task is to help WXYZ to find all different right triangles that can be made.

二、输入

The first line of the input is a positive integer T. T is the number of test cases followed. Each test case contains a integer L (1<=L<=1000), representing the length of the stick.

三、输出

For each test case, output all different right-angled triangles. For each triangle, output one line containing three integers X Y Z, (1<=X<=Y<=Z, X*X+Y*Y=Z*Z). All triangles are sorted in lexicographical order.

Output a blank line after each test case.

例如:

输入:

3

40

50

60

输出:

8 15 17

10 24 26

15 20 25

四、解题思路

这道题相对比较水,主要是从1开始遍历两条直角边的平方和是否等于第三边平方。

总边长为:perimeter

假设最短那条直角边shortHEdge初始值为1;

长的那条直角边longHEdge初始值为1/2perimeter(直角边比斜边短)

斜边longLEdge=perimeter-shortHEdge-longHEdge

判断两直角边的平方和quadraticSum跟斜边平方比。

如果quadraticSum>longLEdge^2,长的直角边-1;

如果quadraticSum

五、代码

#include<iostream>

using namespace std;

int main()
{
int times;
cin >> times;
while(times--)
{
int perimeter, shortHEdge, longHEdge, longLEdge;
long long quadraticSum;
cin >> perimeter; shortHEdge = 1; //短的直角边
longHEdge = perimeter / 2; //长的直角边 while(shortHEdge <= longHEdge) //长的直角边要保持大于等于短的直角边
{
longLEdge = perimeter - longHEdge - shortHEdge; //斜边长度 quadraticSum = (shortHEdge * shortHEdge) + (longHEdge * longHEdge); //两"直角"边和
if(quadraticSum < longLEdge * longLEdge) {shortHEdge++;} //两"直角"边和小于斜边
else if(quadraticSum > longLEdge * longLEdge) {longHEdge--;} //两"直角"边和大于斜边
else {cout << shortHEdge << " " << longHEdge << " " << longLEdge << endl; shortHEdge++;} //两直角边和等于第三边
}
cout << endl;
} return 0;
}

最新文章

  1. JQuery_DOM 节点操作之包裹节点
  2. DataRow循环取出
  3. 边工作边刷题:70天一遍leetcode: day 84-3
  4. phpstorm取消自动保存并标识修改的文件为星星标记
  5. C#全局作用符::
  6. java重构、重载、重写
  7. js 如何获取文本框中光标索引位置
  8. Python中使用Flask、MongoDB搭建简易图片服务器
  9. Cocos2d-x 手游聊天系统需求分析
  10. sql汉字转拼音
  11. parseint和parsefloat总结number。隐形转换
  12. DOM遍历-祖先
  13. 应届生第一次Java面试问题分享
  14. ssh框架总结之action接收参数的三种方式
  15. Entity Framework 5.0.0 Function Import 以及 ODP. NET Implicit REF CURSOR Binding使用简介
  16. C++ 读取字符串中的数字
  17. Code::Blocks环境下导入WS2_32.lib文件
  18. PE文件版本那些事儿
  19. SoapUI利用Groovy对response与断言的处理
  20. powerDesigner16x64安装步骤

热门文章

  1. 【iOS开发-54】案例学习:通过UIScrollView的缩放图片功能练习代理模式的详细实现
  2. [jzoj 5930] [NOIP2018模拟10.26】山花 解题报告 (质因数分类)
  3. Linux进程精讲
  4. WPF学习(一) - XAML
  5. Android 对话框黑色边框的解决
  6. HTML&amp;CSS——使用DIV和CSS完成网站首页重构
  7. DotNetCore.1.0.1-VS2015Tools.Preview2.0.2 安装错误分析及解决办法(so far)
  8. pthread_join/pthread_exit的用法解析
  9. iF.svnadmin 安装遇到的坑
  10. 手把手教你如何新建scrapy爬虫框架的第一个项目(下)