白準-1002(Python)-タレット
5270 ワード
タレット
質問する
チョ・ギュヒョンとペク・スンファンはタレットで働いている職員だ.しかし存在感がないため、人口を占めていない.次はチョ・ギュヒョンとペク・スンファンの写真だ.
李ソクウォンは、チョ・ギュヒョンとペク・スンファンに相手のマリンの位置を計算するように命令した.趙圭賢と白勝煥はそれぞれ自分のターンテーブルの位置から現在の敵までの距離を計算した.
曹圭賢の座標(x 1,y 1)と白勝煥の座標(x 2,y 2)が与えられ、曹圭賢が計算した劉在明との距離r 1と白勝煥が計算した劉在明の距離r 2が与えられた場合、プログラム出力に劉在明の座標数があるようにしてください.
入力
第1行は、試験例の個数Tを与える.各テストケースは次のとおりです.
1行はx 1,y 1,r 1,x 2,y 2,r 2を与える.x 1,y 1,x 2,y 2は−1000以上、10000以下の整数、r 1,r 2は10000以下の自然数である.
しゅつりょく
各テストボックスは、劉在明の位置がある可能性のある数を出力します.劉在明が存在する可能性のある位置の個数が無限大であれば−1を出力する.
コード#コード#
解法
ある点が与えられると、その点から一定距離離れた点が円を形成する.
つまり、2点は円の中心で、敵までの距離は半径です.
問題では、2つの点にそれぞれ1つから敵までの距離があり、2つの円を形成している.
このとき,この2つの円の交点が敵の位置となるため,交点の個数が答えとなる.
そのため、まず2つの中心間の距離を求め、距離が0であれば、2つの円の中心は同じで、2つの半径は同じで、敵の位置は無限で、違いはありません.
四例の解答
距離が0でない場合は、2つの円の中心間の距離と半径の和と差を比較する必要があります.
距離が半径の和に等しい場合、2つの円は外で出会い、車であれば、1つの円内のもう1つの円は1つの点で出会う.
距離は半径の和より小さく、差より大きく、2点で頂点を生成します.
残りの状況はお互いに会わない場合です.
リファレンス図
に答える
for _ in range(int(input())):
x1, y1, r1, x2, y2, r2 = map(int, input().split())
d = (x1-x2)**2 + (y1-y2)**2
rad_sum = (r1 + r2)**2
rad_dif = (r1 - r2)**2
if d == 0:
if r1 == r2:
print(-1)
else:
print(0)
else:
if d in [rad_sum, rad_dif]:
print(1)
elif rad_dif < d < rad_sum:
print(2)
else:
print(0)
Reference
この問題について(白準-1002(Python)-タレット), 我々は、より多くの情報をここで見つけました https://velog.io/@junyp1/백준-1002-Python-터렛-ari7tbehテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol