hrbust OJ 1471 水神的雷射筆

2021-06-14 01:21:48 字數 1747 閱讀 6725

description

水神喜歡玩,這次水神買了一支雷射筆,因為雷射筆晃人很有趣,至少水神是這樣想的。但是畢竟直接用雷射筆晃人是在是太惡劣了,因此水神打算借用乙個平面鏡來達到目的,這樣就不容易被人發現了。

注意:

1、我們認為雷射可以傳播無限遠的距離  

2、我們認為平面鏡只進行鏡面反射

3、平面鏡正反兩面都可以反光,有且只有這兩個面能反光

4、水神不會用雷射筆垂直照射平面鏡鏡面,因為那樣水神會晃到自己

input

第一行乙個整數t,代表測試資料組數(1<=t<=50)

對於每組資料:第一行和第二行輸入兩個浮點數 x1 y1和 x2 y2 表示平面鏡兩個端點的座標(這裡我們只研究二維平面內的問題,因此鏡子可以看做線段),第三行輸入兩個浮點數 x3 y3 表示水神的雷射筆的座標(水神的雷射筆可以在該座標的位置上轉動),第四行輸入兩個浮點數 x4 y4 表示水神目標位置的座標。

output

如果水神能夠通過平面鏡間接用雷射筆找到目標,請輸出雷射在平面鏡上的反射點(保留三位小數)並換行,否則輸出"shuishen failed" (不包括引號),並換行。

注意,每組輸出後有乙個空行!

sample input

20.000 0.000

4.000 0.000

1.000 1.000

3.000 1.000

0.000 0.000

4.000 0.000

1.000 1.000

100.000 1.000

sample output

test #1:

the point is:(2.000,0.000)

test #2:

shuishen failed

#include#include#includeusing namespace std;

typedef struct

point_x_y;

typedef struct

line;

typedef struct

line_set;

double min(double a, double b)

double max(double a, double b)

// 根據已知兩點座標,求過這兩點的直線解析方程: a*x+b*y+c = 0 (a >= 0)

line qiu_line(point_x_y p1, point_x_y p2)

tl.b=sign*(p1.x-p2.x);

tl.c=sign*(p1.y*p2.x-p1.x*p2.y);

return tl;

}//叉積

double multi(point_x_y p0, point_x_y p1, point_x_y p2)

//判斷線段是否相交

bool cross(point_x_y s1, point_x_y e1, point_x_y s2, point_x_y e2)

//求p關於直線l的對稱點

point_x_y symmetry(line l,point_x_y p)

//求l1,l2的交點p

bool lineintersect(line l1,line l2,point_x_y &p)

bool online(line l,point_x_y p)

int main()

}return 0;

}

hrbust oj 1937 神奇的進製轉換

神奇的進製轉換 description xuxu的資料結構要考試了,所以他在很努力的看書,有一天他看呀看呀看,突然看到乙個進製轉換的題目,說是要將乙個十進位制數轉換成二進位制數,他算呀算呀算,然後就把這個問題解決了。可是他很愛思考,他想怎麼樣能夠將這個十進位制數轉換成k進製的數呢?求幫助,help!...

vijos1471 教主的遊樂場

輸入的第1行包含兩個正整數n,m,為裝置的數目以及詢問的次數。第2行包含n個正整數,第i個正整數為a i 即第i個裝置向反方向最大跳躍的長度。第3行包含了m個正整數,為詢問從哪乙個裝置開始,最少要幾次跳到第n個的後方。數字之間用空格隔開。輸出包含1行,這一行有m個正整數,對於每乙個詢問,輸出最少需要...

1471 陣列中的 k 個最強值

題目描述 給你乙個整數陣列 arr 和乙個整數 k 設 m 為陣列的中位數,只要滿足下述兩個前提之一,就可以判定 arr i 的值比 arr j 的值更強 arr i m arr j m arr i m arr j m 且 arr i arr j 請返回由陣列中最強的 k 個值組成的列表。答案可以以...