結果
| 問題 |
No.1063 ルートの計算 / Sqrt Calculation
|
| コンテスト | |
| ユーザー |
norioc
|
| 提出日時 | 2024-08-12 06:59:39 |
| 言語 | Elixir (1.18.1) |
| 結果 |
AC
|
| 実行時間 | 607 ms / 2,000 ms |
| コード長 | 830 bytes |
| コンパイル時間 | 1,749 ms |
| コンパイル使用メモリ | 62,080 KB |
| 実行使用メモリ | 54,416 KB |
| 最終ジャッジ日時 | 2024-08-12 06:59:53 |
| 合計ジャッジ時間 | 13,314 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 14 |
ソースコード
defmodule Main do
def input, do: IO.read(:line) |> String.trim
def ii, do: input() |> String.to_integer
def li, do: input() |> String.split |> Enum.map(&String.to_integer/1)
def yn(b), do: IO.puts(if b, do: "Yes", else: "No")
def main do
n = ii()
freq = Enum.frequencies(factorize(n))
{a, b} = for {k, v} <- freq, reduce: {1, 1} do
{a, b} ->
{d, m} = divmod(v, 2)
a2 = if d == 0, do: 1, else: k ** d
b2 = if m == 0, do: 1, else: k
{a * a2, b * b2}
end
IO.puts "#{a} #{b}"
end
def divmod(a, b), do: {div(a, b), rem(a, b)}
def factorize(n) do
factorize(n, 2)
end
defp factorize(n, p) do
cond do
n == 1 -> []
p * p > n -> [n]
rem(n, p) == 0 -> [p | factorize(div(n, p), p)]
true -> factorize(n, p+1)
end
end
end
norioc