【ABC174 B】「Distance」を解く【Python3】

コンテスト一覧へ

 

2次元平面上にあるN個の点[座標(Xi, Yi)]のうち、原点からの距離がD以下であるような点がいくつあるのか求める問題です

提出
import math

n, d = map(int, input().split())
ans = 0

for i in range(n):
    x, y = map(int, input().split())
    if math.sqrt(x**2+y**2) <= d:
        ans += 1
 
print(ans)

入力はすべて整数です。

ルートを使うために、mathモジュールを利用しています。

それぞれの座標と原点の距離をすべて求め、距離がd以下であれば、ansに1足します。

最後にansに入っている数字が答えになります。

ただ、今回は大丈夫でしたが、プログラムで計算結果が浮動小数点型になる場合は、誤差が生じることがあるため、注意が必要です。

比較するときに、整数同士で比較できる場合は、ルートなどを使わず、なるべく整数で計算した方がいいようですね。

 

ということで、ルートを使っていない方法も紹介します。

提出
n, d = map(int, input().split())
ans = 0

for i in range(n):
    x, y = map(int, input().split())
    if x**2+y**2 <= d**2:
        ans += 1
 
print(ans)

「x2+y2」がd2以下かどうかで判定しても同じ結果が得られます。

【ABC174】解説記事リスト

コンテスト一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。