C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++の正三角形に内接する別個の長方形の数


辺の長さが正三角形です。目標は、長方形の水平方向の辺が底辺に平行になるように、三角形の内側に存在できる別個の長方形の数を数えることです。また、図のように、長方形のすべての端点がドットに接しています。

C++の正三角形に内接する別個の長方形の数

例を挙げて理解しましょう

入力 −sides =3

出力 −正三角形に内接する別個の長方形の数は− 1

説明 −上の図は長方形を示しています。

入力 −sides =10

出力 −正三角形に内接する別個の長方形の数は− 200

以下のプログラムで使用されているアプローチは次のとおりです

上の図からわかるように、水平方向のエッジが交互のレベルのドットの間に存在することがわかります。

ドットの数は、レベル0-1、レベル1-2...レベルn-n+1から数えることができます。

  • 辺を整数変数として入力し、それを関数に渡してさらに処理します

  • 一時変数をカウント、温度、チェックとして使用します。

  • 辺が奇数であるかどうかを確認してから、ループFORiを辺-1からiが1より大きいまで開始します

  • ループ内で、IF i&1をチェックしてから、tempを(sides --i)/ 2に設定し、checkを(i *(i + 1))/ 2に設定し、countをcheck * temp ELSEに設定し、tempを((sides --1)--i)/ 2また、checkを(i *(i + 1))/ 2として設定し、countをcheck * temp

    として設定します。
  • それ以外の場合、辺が偶数の場合は、iが辺-1でiが1より大きい別のループFORを開始します。

  • ループ内で、IF i&1をチェックしてから、tempを((sides --1)-i)/ 2として設定し、checkを(i *(i + 1))/ 2として設定し、countをcheck*tempとして設定します。 (sides --i)/ 2そしてチェックを(i *(i + 1))/ 2として設定し、カウントをチェック*温度として設定します。

  • 返品数

  • 結果を印刷します。

#include <iostream>
using namespace std;
int rec_inside_equi(int sides){
   int count = 0, temp, check;
   if(sides%2 != 0){
      for(int i = sides - 2; i >= 1; i--){
         if (i & 1){
            temp = (sides - i) / 2;
            check = (i * (i + 1)) / 2;
            count += check * temp;
         }
         else{
            temp = ((sides - 1) - i) / 2;
            check = (i * (i + 1)) / 2;
            count += check * temp;
         }
      }
   }
   else{
      for(int i = sides - 2; i >= 1; i--){
         if (i & 1){
            temp = ((sides - 1) - i) / 2;
            check = (i * (i + 1)) / 2;
            count += check * temp;
         }
         else{
            temp = (sides - i) / 2;
            check = (i * (i + 1)) / 2;
            count += check * temp;
         }
      }
   }
   return count;
}
int main(){
   int sides = 4;
   cout<<"Count of distinct rectangles inscribed in an equilateral triangle are: "<<rec_inside_equi(sides);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Count of distinct rectangles inscribed in an equilateral triangle are: 4

  1. C++で正三角形の外接円の面積を計算するプログラム

    名前が示すように、正三角形は等しい辺を持ち、またそれぞれ60°の等しい内角を持つものです。正多角形であるため、正三角形とも呼ばれます 正三角形の特性は 同じ長さの3辺 同じ程度の内角60° 多角形の外接円は、多角形のすべての頂点を通過する円です。円の半径は、外接円半径と呼ばれる円の内側のポリゴンのエッジまたは辺にすることができ、円の中心は外接円と呼ばれます。円の内側でも外側でもかまいません 以下に示すのは、正三角形の外接円の図です 問題 正三角形の側面を考えると、タスクは正三角形の外接円の面積を見つけることです。ここで、面積は形状が占めるスペースです。 正三角形の外接円の面

  2. C++で六角形に内接する最大の三角形の面積

    ここでは、正六角形に内接する最大の三角形の領域が表示されます。六角形の各辺は「a」であり、三角形の各辺は「b」です。 この図から、六角形の1つの辺を使用して1つの三角形を作成すると、これらの2つの三角形が各辺を2つの部分に分割していることがわかります。 2つの直角三角形も見ることができます。ピタゴラスの公式から、次のように言うことができます- したがって、面積は- 例 #include <iostream> #include <cmath> using namespace std; float area(float a) {   &nbs