Atcoder Beginner Contestにおいて以下のようなコードを提出たところTLEになりました。
for文が一つのため最大でも4*10^5で10^6以下に収まっているためなぜTLEとなってしまったのかが理解できません。
型変換やDecimalの計算にはかなりの時間を要するのでしょうか。
なぜTLEが起きてしまったのか、コードを改善するとしたらどこなのかご教授いただければと思います。
※Decimalを使わずfloat型で提出したところWAになりました。おそらく誤差が出てしまったものと思います。
python(pypy)
1from decimal import Decimal 2import math 3 4x,y,r = map(float,input().split()) 5ans = 0 6i_min,i_max = math.ceil(x-r),math.floor(x+r) 7 8for i in range(i_min,i_max+1): 9 y_max = y + float((Decimal(str(r**2-(i-x)**2)))**(Decimal("0.5"))) 10 y_min = -y_max + 2*y 11 12 ans +=(math.floor(y_max)-math.ceil(y_min)+1) 13 14print(ans)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/13 07:05