计算C ++中给定周长可能的直角三角形数量
给定三角形的周长P。周长是三角形所有边的总和。目的是找到可以制造的具有相同周长的直角三角形的数量。
如果三角形的边是a,b和c。然后a+b+c=P和a2+b2=c2(a,b和c的任意组合的毕达哥拉斯定理)
我们将通过从1到p/2的a和从a+1到p/3的b进行检查。然后c=pab(a+b+c=p)
对于所有直角三角形,应用毕达哥拉斯定理。a,b和c的值还应满足形成三角形的条件,其中任意两个边的总和始终大于第三。
让我们通过示例来理解。
输入-周长P=12
输出-直角三角形总数-1
说明-
满足a+b+c=P且a2+b2=c2(也是任何两个>第三的和)的a,b和c的唯一值是4、3和5。
4+3+5=12,3*3+4*4=5*5(9+16=25)3+4>5,4+5>3,3+5>4
输入-周长P=10
输出-直角三角形总数-0
说明-
没有a,b和c的值可以满足a+b+c=P且a2+b2=c2
以下程序中使用的方法如下
我们采用整数变量周长,该变量存储给定周长的值。
函数rightTriangles(intp)将周长作为输入,并返回可能的直角三角形总数。
可变计数存储可能的直角三角形的数量,最初为0。
使用for循环从a=1到p/2
再次为b=a+1至p/3使用嵌套的for循环开始(两个边在直角三角形中永远不相等)
计算c=pab。为此,请检查(a+b>c&&b+c>a&&a+c>b)。
还要检查毕达哥拉斯定理,其中a*a+b*b==c*c。如果为真,则递增计数。
最后,返回计数包含在给定周长下可能的直角三角形数量。
返回计数为所需结果。
注意-我们将仅针对pythagoras定理检查a,b和c的一种组合,以获得唯一的结果。
示例
#include <bits/stdc++.h> using namespace std; int rightTriangles(int p){ int count = 0; int c=0; for( int a=1;a<p/2;a++){ for(int b=1;b<p/3;b++){ c=p-a-b; if( a+b>c && b+c>a && a+c>b) //condition for triangle{ if( (a*a+b*b)==c*c ) //pythagoras rule for right triangles { ++count; } } } } return count; } int main(){ int perimeter= 12; cout << "Total number of right triangles that can be formed: "<<rightTriangles(perimeter); return 0; }
输出结果
如果我们运行上面的代码,它将生成以下输出-
Total number of right triangles that can be formed: 1