C++ 中圆上等距点之间钝角的数量


给定一个圆,其圆周上有 K 个等距点。还给定两个点 A 和 B。目标是计算使用这些点可以形成的三角形的数量,使得它们在内部有一个钝角 ACB(大于 90o 的角)。点 A 和 B 使得 A < B。

这里 K=8,A=2,B=5,点的数量=2(C,C'),使得角 LACB,LAC'B 为钝角。

让我们通过示例来理解

输入 − k=10,A=2,B=4

输出 − 圆上两个给定点之间等距点的钝角数量为 - 1

解释 − 该点将为 C=3

输入 − k=12,A=2,B=10

输出 − 圆上两个给定点之间等距点的钝角数量为 - 3

下面程序中使用的算法如下

可以看出,如果 A 和 B 之间的弧越小,则点将只位于该弧上。

计算两个弧,如果它们长度相等,则没有这样的三角形,返回 0。否则将计数设置为较小的弧,即以点数表示的距离。

  • 将输入作为整数 k、point_a 和 point_b。

  • 函数 Obtuse_angle_circle(int point_a, int point_b, int k) 获取所有变量并返回圆上两个给定点之间等距点的钝角数量

  • 将初始计数设置为 0。

  • 计算第一个弧为 arc_1 = (point_b - point_a) - 1。(b>a)

  • 计算第二个弧为 (k - point_b) + (point_a - 1)。

  • 如果两个弧相等,则返回 0,因为没有这样的点。

  • 如果它们不相等,则将计数更新为两者中的最小值,因为所有点都位于它上面。

  • 返回计数作为结果。

示例

 实时演示

#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

更新于: 2020-12-03

106 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.