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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP