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 個值組成的列表。答案可以以...