Problem:
Score: 100 points

Problem Statement

E869120 has A 1-yen coins and infinitely many 500-yen coins.

Determine if he can pay exactly N yen using only these coins.

Constraints

N is an integer between 1 and 10000 (inclusive).

A is an integer between 0 and 1000 (inclusive).

Input

Input is given from Standard Input in the following format:

N
A

Output

If E869120 can pay exactly N yen using only his 1-yen and 500-yen coins, print Yes; otherwise, print No.

Sample Input 1

2018
218

Sample Output 1

Yes

We can pay 2018 yen with four 500-yen coins and 18 1-yen coins, so the answer is Yes.

Sample Input 2

2763
0

Sample Output 2

No

When we have no 1-yen coins, we can only pay a multiple of 500 yen using only 500-yen coins. Since 2763 is not a multiple of 500, we cannot pay this amount.

Sample Input 3

37
514

Sample Output 3

Yes

Solution in Ruby (2.3.3) (judge verdict: Runtime Error)

size = gets.chomp.split(" ").map(&:to_i)
h = size[0]
w = size[1]
board = []
for in 1..h do
board.push(gets.chomp)
end

point = 0
diff = fill
while diff != 0 do
  point = point + diff
  diff = fill
end

if board[0][1] == "#" and board[1][0] == "#" then
  puts -1
else
  puts point
end

def needless(i,j)
  up_left = i  != 0 and j != 0 and board[i-1][j-1] == "."
  up = i != 0 and board[i-1][j] == "."
  up_right = i != 0 and j != w-1 and board[i-1][j+1] == "."
  left = j != 0 and board[i][j-1] == "."
  right = j  != w - 1 and board[i][j+1] == "."
  down_left = i != h-1 and j != 0 and board[i+1][j-1] == "."
  down = i != h-1 and board[i+1][j] == "."
  down_right = i != h-1 and j != w-1 and board[i+1][j+1] == "."
  return true if !up and !down and !left
  return true if !up and !down and !right
  return true if !left and !right and !up
  return true if !left and !right and !down
  return true if !left and !down and up_right
  return true if !left and !up and down_right
  return true if !right and !down and up_left
  return true if !right and !up and down_left
  return false
end

def fill
  num = 0
  for i in 0..(h-1) do
    for j in 0..(w-1) do
      next if i == 0 and j == 0
      next if i == (h-1) and j == (w-1)
      next if board[i][j] == "#"
      if needless(i,j) then
        board[i][j] = "#"
        num = num + 1
      end
    end
  end
  return num
end