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以下かどうかで判定しても同じ結果が得られます。