結果

問題 No.25 有限小数
コンテスト
ユーザー te-sh
提出日時 2017-01-16 17:17:11
言語 D
(dmd 2.112.0)
コンパイル:
dmd -fPIE -m64 -w -wi -O -release -inline -I/opt/dmd/src/druntime/import/ -I/opt/dmd/src/phobos -L-L/opt/dmd/linux/lib64/ -fPIC _filename_
実行:
./Main
結果
WA  
実行時間 -
コード長 663 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 643 ms
コンパイル使用メモリ 90,100 KB
実行使用メモリ 7,844 KB
最終ジャッジ日時 2026-03-05 11:39:03
合計ジャッジ時間 1,718 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 27 WA * 4
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import std.algorithm, std.conv, std.range, std.stdio, std.string;
import std.bigint;    // BigInt

void main()
{
  auto n = readln.chomp.to!long;
  auto m = readln.chomp.to!long;
  writeln(calc(n, m));
}

auto calc(long n, long m)
{
  if (n % m == 0)
    return dsr(n / m);

  auto f1 = powers(m, 2);
  auto f2 = powers(m, 5);

  if (m  != 2L ^^ f1 * 5L ^^ f2)
    return -1;

  auto k = n.to!BigInt;
  if (f1 < f2) k *= 2 ^^ (f2 - f1);
  if (f1 > f2) k *= 5 ^^ (f1 - f2);
  return dsr(k);
}

auto powers(long n, int d)
{
  auto c = 0;
  for (; n % d == 0; n /= d) ++c;
  return c;
}

auto dsr(T)(T n)
{
  while (n % 10 == 0) n /= 10;
  return (n % 10).to!int;
}
0