洛谷P1355 神秘大三角

2021-07-28 07:00:00 字數 2967 閱讀 1270

題目描述

判斷乙個點與已知三角形的位置關係。

輸入輸出格式

輸入格式:

前三行:每行乙個座標,表示該三角形的三個頂點

第四行:乙個點的座標,試判斷該點與前三個點圍成三角形的位置關係

(詳見樣例)

所有座標值均為整數。

輸出格式:

若點在三角形內(不含邊界),輸出1;

若點在三角形外(不含邊界),輸出2;

若點在三角形邊界上(不含頂點),輸出3;

若點在三角形頂點上,輸出4。

輸入輸出樣例

輸入樣例#1:

(0,0)

(3,0)

(0,3)

(1,1)

輸出樣例#1:

1 說明

【資料規模與約定】

var

s1,s2,s3,s4,s:string;

x1,x2,x3,x4,y1,y2,y3,y4,i,j,b,m:longint;

function pd(x,y,x1,y1,x2,y2:longint):boolean;

var max,min:longint;

begin

if x1>x2 then

begin max:=x1; min:=x2; end

else

begin max:=x2; min:=x1; end;

if (x>max)or(xthen exit(false);

if y1>y2 then

begin max:=y1; min:=y2; end

else

begin max:=y2; min:=y1; end;

if (y>max)or(ythen exit(false);

exit(true);

end;

begin

readln(s1);

readln(s2);

readln(s3);

readln(s4);

for i:=1

to pos(',',s1) do

if s1[i] in ['0'..'9'] then s:=s+s1[i];

val(s,x1);

s:='';

for i:=pos(',',s1)+1

to length(s1) do

if s1[i] in ['0'..'9'] then s:=s+s1[i];

val(s,y1);

s:='';

for i:=1

to pos(',',s2) do

if s2[i] in ['0'..'9'] then s:=s+s2[i];

val(s,x2);

s:='';

for i:=pos(',',s2)+1

to length(s2) do

if s2[i] in ['0'..'9'] then s:=s+s2[i];

val(s,y2);

s:='';

for i:=1

to pos(',',s3) do

if s3[i] in ['0'..'9'] then s:=s+s3[i];

val(s,x3);

s:='';

for i:=pos(',',s3) to length(s3) do

if s3[i] in ['0'..'9'] then s:=s+s3[i];

val(s,y3);

s:='';

for i:=1

to pos(',',s4) do

if s4[i] in ['0'..'9'] then s:=s+s4[i];

val(s,x4);

s:='';

for i:=pos(',',s4) to length(s4) do

if s4[i] in ['0'..'9'] then s:=s+s4[i];

val(s,y4);

if (x1=x4)and(y1=y4) then

begin writeln(4); halt; end;

if (x2=x4)and(y2=y4) then

begin writeln(4); halt; end;

if (x3=x4)and(y3=y4) then

begin writeln(4); halt; end;

if ((x4-x2)*(y1-y2)-(x1-x2)*(y4-y2)=0)and(pd(x4,y4,x1,y1,x2,y2)) then

begin writeln(3); halt; end;

if ((x4-x3)*(y2-y3)-(x2-x3)*(y4-y3)=0)and(pd(x4,y4,x2,y2,x3,y3)) then

begin writeln(3); halt; end;

if ((x4-x1)*(y3-y1)-(x3-x1)*(y4-y1)=0)and(pd(x4,y4,x3,y3,x1,y1)) then

begin writeln(3); halt; end;

m:=(x1-x4)*(y2-y4)-(x2-x4)*(y1-y4);

if m>0

then m:=1

else m:=-1;

b:=(x2-x4)*(y3-y4)-(x3-x4)*(y2-y4);

if b>0

then b:=1

else b:=-1;

if b<>m then

begin writeln(2); halt; end;

b:=(x3-x4)*(y1-y4)-(x1-x4)*(y3-y4);

if b>0

then b:=1

else b:=-1;

if b<>m then

begin writeln(2); halt; end;

writeln(1);

end.

洛谷 P1355 神秘大三角

判斷乙個點與已知三角形的位置關係。若點在三角形內 不含邊界 輸出1 若點在三角形外 不含邊界 輸出2 若點在三角形邊界上 不含頂點 輸出3 若點在三角形頂點上,輸出4。非常簡單,只要你會 1.讀入,因為有括號,所以我只能先用字串讀,然後慢慢轉成數字。這一步注意,不要忘記資料裡有三位數,要打好相應的 ...

神秘大三角 洛谷P1355 叉積)

判斷乙個點與已知三角形的位置關係。輸入格式 前三行 每行乙個座標,表示該三角形的三個頂點 第四行 乙個點的座標,試判斷該點與前三個點圍成三角形的位置關係 詳見樣例 所有座標值均為整數。輸出格式 若點在三角形內 不含邊界 輸出1 若點在三角形外 不含邊界 輸出2 若點在三角形邊界上 不含頂點 輸出3 ...

洛谷 P1355 神秘大三角 計算幾何基礎

p1355 神秘大三角 題目提供者yeszy 標籤 福建省歷屆夏令營 難度 普及 提高 題目描述 判斷乙個點與已知三角形的位置關係。輸入輸出格式 輸入格式 前三行 每行乙個座標,表示該三角形的三個頂點 第四行 乙個點的座標,試判斷該點與前三個點圍成三角形的位置關係 詳見樣例 所有座標值均為整數。輸出...