Powered by AppSignal & Oban Pro

ABC083B - Some Sums

submit_1.livemd

ABC083B - Some Sums

問題

回答1

1..10000
|> Enum.map(fn num ->
  div(num, 10000) +
    (num |> div(1000) |> rem(100)) +
    (num |> div(100) |> rem(10)) +
    (num |> div(10) |> rem(10)) +
    rem(num, 10)
end)
defmodule Main do
  def main do
    :stdio
    |> IO.read(:all)
    |> solve()
    |> IO.puts()
  end

  defp split_words(words) do
    String.split(words, " ")
  end

  def solve(input) do
    [n, a, b] =
      input
      |> String.trim()
      |> split_words()
      |> Enum.map(&String.to_integer/1)

    1..n
    |> Enum.filter(fn num ->
      sum =
        div(num, 10000) +
          (num |> div(1000) |> rem(10)) +
          (num |> div(100) |> rem(10)) +
          (num |> div(10) |> rem(10)) +
          rem(num, 10)

      sum >= a &amp;&amp; sum <= b
    end)
    |> Enum.sum()
  end
end
"""
20 2 5
"""
|> Main.solve()
|> then(&amp;(&amp;1 == 84))
"""
10 1 2
"""
|> Main.solve()
|> then(&amp;(&amp;1 == 13))
"""
100 4 16
"""
|> Main.solve()
|> then(&amp;(&amp;1 == 4554))