前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【欧拉计划第 9 题】特殊的毕达哥拉斯三元数 Special Pythagorean triplet

【欧拉计划第 9 题】特殊的毕达哥拉斯三元数 Special Pythagorean triplet

作者头像
攻城狮杰森
发布2022-06-03 13:31:01
7400
发布2022-06-03 13:31:01
举报
文章被收录于专栏:技术集锦

Problem 9 Special Pythagorean triplet

A Pythagorean triplet is a set of three natural numbers, a < b < c , for which,

\large a^2+b^2=c^2

For example,

\large 3^2+4^2=9+16=25=5^2

There exists exactly one Pythagorean triplet for which a + b + c = 1000

. Find the product abc .

问题 9 特殊的毕达哥拉斯三元数

毕达哥拉斯三元组是一组三个自然数的集合,且

a < b < c

,其中

\large a^2+b^2=c^2

例如:

\large 3^2+4^2=9+16=25=5^2

恰好存在一个 a + b + c = 1000 的毕达哥拉斯三元组,求积 abc

解题报告

题目中提到了毕达哥拉斯三元组,我们首先理解下其数学定义

毕达哥拉斯定理

在一个边长为 a、b、c 的直角三角形中,a²+b²=c² 。理想的情况是 a、b、c 均为整数,则称为毕达哥拉斯三元数组

如题目中给出的例子,3、4、5 就符合条件

思路

根据题目叙述,我们要满足 a < b < ca²+b²=c² 的条件

那么只需要分别定义三个变量 a、b、c ,分别给它们赋值为 1、2、3 并符合比较关系,用来满足第一个条件

然后从变量 c

开始,三层循环,最后一层中去判断 a + b + c = 1000a²+b²=c² 条件如果满足,则输出此时的乘积即为所求

这并不是唯一的解决方案,但是是我认为比较简单,最容易理解的一种

代码实现

代码语言:javascript
复制
/*
 * @Author: coder-jason
 * @Date: 2022-04-17 13:04:36
 * @LastEditTime: 2022-04-17 13:24:10
 */
#include <bits/stdc++.h>
using namespace std;

int main()
{
    for (int c = 3; c < 1000; c++)
    {
        for (int b = 2; b < c; b++)
        {
            for (int a = 1; a < b; a++)
            {
                if ((a + b + c == 1000) && (a * a + b * b == c * c))
                {
                    cout << a * b * c;
                }
            }
        }
    }
    return 0;
}

答案:31875000

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Problem 9 Special Pythagorean triplet
  • 问题 9 特殊的毕达哥拉斯三元数
  • 解题报告
    • 毕达哥拉斯定理
      • 思路
      • 代码实现
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档