はじめに
AtCoder Problems の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
今回のお題
Difficulty: 247
いやー、この問題ちょっと鬼畜眼鏡ではないのかな。
Ruby
AC.rb
n, l, w = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)
a << l
ans = (a[0] / w.to_r).ceil
n.times do |i|
if a[i + 1] - a[i] - w > 0
ans += ((a[i + 1] - a[i] - w) / w.to_r).ceil
end
end
puts ans
WA.rb
n, l, w = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)
a << l
ans = (a[0] / w.to_f).ceil
n.times do |i|
if a[i + 1] - a[i] - w > 0
ans += ((a[i + 1] - a[i] - w) / w.to_f).ceil
end
end
puts ans
AC.rb
とWA.rb
の違い、分かりますでしょうか。
Python
AC.py
from math import ceil
from fractions import Fraction
n, l, w = map(int, input().split())
a = list(map(int, input().split()))
a.append(l)
ans = ceil(Fraction(a[0], w))
for i in range(n):
if a[i + 1] - a[i] - w > 0:
ans += ceil(Fraction(a[i + 1] - a[i] - w, w))
print(ans)
WA.py
from math import ceil
n, l, w = map(int, input().split())
a = list(map(int, input().split()))
a.append(l)
ans = ceil(a[0] / w)
for i in range(n):
if a[i + 1] - a[i] - w > 0:
ans += ceil((a[i + 1] - a[i] - w) / w)
print(ans)
Python
だと書式が違いますので気付かれると思いますが、浮動小数の誤差による、AC
とWA
の違いでした。
まとめ
- ARC 134 A を解いた