白準-1002(Python)-タレット


タレット


質問する


チョ・ギュヒョンとペク・スンファンはタレットで働いている職員だ.しかし存在感がないため、人口を占めていない.次はチョ・ギュヒョンとペク・スンファンの写真だ.

李ソクウォンは、チョ・ギュヒョンとペク・スンファンに相手のマリンの位置を計算するように命令した.趙圭賢と白勝煥はそれぞれ自分のターンテーブルの位置から現在の敵までの距離を計算した.
曹圭賢の座標(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)