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

C++で指定された2つの点の間に「k」等距離の点がある円の鈍角の数


円周上にK個の等距離点を持つ円が与えられます。また、2つの点AとBが与えられます。目標は、これらの点を使用して可能な三角形の数を数え、それらの内部に鈍角ACB(90°より大きい角度)が含まれるようにすることです。ポイントAとBは、Aのようになります。

C++で指定された2つの点の間に「k」等距離の点がある円の鈍角の数

ここで、K =8、A =2、B =5、ポイント数=2(C、C’)で、角度LACB、LAC’Bは鈍角です。

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

入力 − k =10、A =2、B =4

出力 −与えられた2つの点の間に「k」等距離の点がある円の鈍角の数は− 1

説明 −ポイントはC=3になります

入力 − k =12、A =2、B =10

出力 −与えられた2つの点の間に「k」等距離の点がある円の鈍角の数は− 3

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

AとBの間の円弧が小さい場合、ポイントはその円弧上にのみ存在することがわかります。

両方の円弧を計算し、それらが同じ長さである場合、そのような三角形は不可能である場合は、0を返します。それ以外の場合は、点で表した距離である小さい円弧としてカウントを設定します。

  • 入力を整数k、point_a、point_bとして受け取ります。

  • 関数Obtuse_angle_circle(int point_a、int point_b、int k)はすべての変数を受け取り、2つの指定された点の間に「k」等距離の点がある円の鈍角の数を返します

  • 初期カウントを0とします。

  • 最初のアークをarc_1=(point_b --point_a)-1.(b> a)

    として計算します。
  • 2番目の円弧を(k --point_b)+(point_a -1)として計算します。

  • 両方のアークが等しい場合、そのようなポイントは不可能であるため、0を返します。

  • それらが等しくない場合は、すべてのポイントがその上にあるため、更新カウントは最低2つです。

  • 結果としてカウントを返します。

#include <bits/stdc++.h>
using namespace std;
int Obtuse_angle_circle(int point_a, int point_b, int k){
   int count = 0;
   int arc_1 = (point_b - point_a) - 1;
   int arc_2 = (k - point_b) + (point_a - 1);
   if (arc_1 == arc_2){
      return 0;
   }
   count = min(arc_1, arc_2);
   return count;
}
int main(){
   int k = 10;
   int point_a= 1;
   int point_b = 4;
   cout<<"Count of obtuse angles in a circle with ‘k' equidistant points between 2 given pointsare: "<<Obtuse_angle_circle(point_a, point_b, k);
   return 0;
}

出力

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

Count of obtuse angles in a circle with ‘k' equidistant points between 2 given points are: 2

  1. C++でmが同一線上にある合計nポイントの三角形の数

    2D平面上の点の数を表す2つの変数nとmが与えられます。 n個のポイントのうち、m個のポイントは同一線上にあります。目標は、これらのn個の点を使用して形成できる三角形の数を見つけることです。 同一線上の点 −同じ線上にある点は同一線上にあると呼ばれます。ポイントAとBは同一線上にあります。 n =4(A、B、C、D)の場合、m =2(A、B) 三角形の数- 4から任意の3つのポイントを選択=4C 3 ただし、同一線上の点は三角形を形成できないため、上記でカウントされる可能性のある三角形を削除します=2C 3 三角形の合計=4C 3 --2C 3 =4-0 =4

  2. C++で特定の円の2つの部分の角度の最小差を見つけるプログラム

    この問題では、円の角度に基づいて円の一部を表す配列が与えられます。私たちのタスクは、C++で特定の円の2つの部分の角度の最小差を見つけるプログラムを作成することです 。 問題の説明 −配列内の円のすべての部分の角度が与えられます。作った2つのピースの角度の差が最小になるようにピースを結合する必要があります。 問題を理解するために例を見てみましょう 入力 ang[] = {90, 45, 90, 135} 出力 90 説明 1番目と2番目を一緒に取る、つまり90 + 45=135。 3番目と4番目を一緒に取る、つまり90 + 135 =225 差=225-135=90 ソリ