疑問集

# for文は改行しなくてもいいのか?

 何故これが動く?

 



 

 

 

# 確率の問題

nCr / nCr でも確率出せるけど、nPr /nPrでも同様に出してよかったはず?

本当によかったのか整理する

algo-method.com

 

 

# input()の処理はそれだけをまとめて行った方が速い?

algo-method.com

これだとTLE

 

# まだTLEな箇所がある
# 先に、Pごとに、満たす整数x,yのくみが何個あるか数えておく


num_couples_to_make_p = [0 for _ in range(10001)]


for x in range(-100,101):
for y in range(-100,101):
p = x**2 + y**2
if p <= 10000:
num_couples_to_make_p[p] += 1

Q = int(input())

for _ in range(Q):
P = int(input())
print(num_couples_to_make_p[P])

 

 

これが正解

# 入力を受け取る
Q = int(input())
P = [0 for _ in range(Q)]
for i in range(Q):
P[i] = int(input())

pmax = 10**4 # P の最大値
counter = [0 for _ in range(2*pmax+1)] # counter[v] : x^2 + y^2 = v を満たす整数組 (x, y) の個数
# 必要な範囲だけ全探索
for x in range(-100, 101, 1):
for y in range(-100, 101, 1):
v = x * x + y * y
counter[v] += 1

# クエリに対する答え
for i in range(Q):
p = P[i]
print(counter[p])

なるほど?