input
第1行:乙個數t,表示輸入的測試數量(1 <= t <= 10000),之後每4行用來描述一組測試資料。
4-1:三個數,前兩個數為圓心的座標xc, yc,第3個數為圓的半徑r。(-3000 <= xc, yc <= 3000, 1 <= r <= 3000)
4-2:2個數,三角形第1個點的座標。
4-3:2個數,三角形第2個點的座標。
4-4:2個數,三角形第3個點的座標。(-3000 <= xi, yi <= 3000)
output
共t行,對於每組輸入資料,相交輸出」yes」,否則輸出」no」。
input示例
2 0 0 10
10 0
15 0
15 5
0 0 10
0 0
5 0
5 5
output示例
yes
no題解:這道題先去討論三角形的三個頂點是否在圓外面,如果都在圓外面,則變成了判斷的線段是否與圓相交的問題
#include
#include
#include
#include
#include
using namespace std;
#define m 1010
#define ll long long
struct node
;node no[3];
node c;
ll rl[3], r;
bool judge(node *a, node *b)//判斷線段是否與圓相交
else
if(a->y == b->y)
else
num1 = al*c.x + bl*c.y + cl;
num1 *= num1;
num2 = r*r
*(al*al+bl*bl);
if(num2 < num1)//判斷直線是否可以與圓相交
ll angle1 = (c.x-a->x)*(b->x-a->x) + (c.y-a->y)*(b->y-a->y);//線段與圓是否相交的條件
ll angle2 = (c.x-b->x)*(a->x-b->x) + (c.y-b->y)*(a->y-b->y);
if(angle1>0 && angle2>0)
return0;}
int main()
if(!rl[0] || !rl[1] || !rl[2])
if(rl[0]<0&&rl[1]<0&&rl[2]<0)
if(rl[0]>0&&rl[1]>0&&rl[2]>0)
else
}else
}return
0;}
1298 圓與三角形
1298 圓與三角形 hackerrank 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 給出圓的圓心和半徑,以及三角形的三個頂點,問圓同三角形是否相交。相交輸出 yes 否則輸出 no 三角形的面積大於0 第1行 乙個數t,表示輸入的測試數量 1 t 10000 之後...
1298 圓與三角形
給出圓的圓心和半徑,以及三角形的三個頂點,問圓同三角形是否相交。相交輸出 yes 否則輸出 no 三角形的面積大於0 第1行 乙個數t,表示輸入的測試數量 1 t 10000 之後每4行用來描述一組測試資料。4 1 三個數,前兩個數為圓心的座標xc,yc,第3個數為圓的半徑r。3000 xc,yc ...
1298 圓與三角形
給出圓的圓心和半徑,以及三角形的三個頂點,問圓同三角形是否相交。相交輸出 yes 否則輸出 no 三角形的面積大於0 第1行 乙個數t,表示輸入的測試數量 1 t 10000 之後每4行用來描述一組測試資料。4 1 三個數,前兩個數為圓心的座標xc,yc,第3個數為圓的半徑r。3000 xc,yc ...