結果

問題 No.2558 中国剰余定理
ユーザー chaemonchaemon
提出日時 2023-12-02 14:32:15
言語 Nim
(2.0.2)
結果
AC  
実行時間 94 ms / 2,000 ms
コード長 14,867 bytes
コンパイル時間 5,729 ms
コンパイル使用メモリ 93,880 KB
実行使用メモリ 6,548 KB
最終ジャッジ日時 2023-12-02 14:33:12
合計ジャッジ時間 6,638 ms
ジャッジサーバーID
(参考情報)
judge13 / judge15
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
6,548 KB
testcase_01 AC 2 ms
6,548 KB
testcase_02 AC 24 ms
6,548 KB
testcase_03 AC 2 ms
6,548 KB
testcase_04 AC 94 ms
6,548 KB
testcase_05 AC 2 ms
6,548 KB
testcase_06 AC 1 ms
6,548 KB
testcase_07 AC 1 ms
6,548 KB
testcase_08 AC 21 ms
6,548 KB
testcase_09 AC 1 ms
6,548 KB
testcase_10 AC 9 ms
6,548 KB
testcase_11 AC 14 ms
6,548 KB
testcase_12 AC 4 ms
6,548 KB
testcase_13 AC 2 ms
6,548 KB
testcase_14 AC 4 ms
6,548 KB
testcase_15 AC 5 ms
6,548 KB
testcase_16 AC 30 ms
6,548 KB
testcase_17 AC 2 ms
6,548 KB
testcase_18 AC 28 ms
6,548 KB
testcase_19 AC 37 ms
6,548 KB
testcase_20 AC 8 ms
6,548 KB
testcase_21 AC 18 ms
6,548 KB
testcase_22 AC 2 ms
6,548 KB
testcase_23 AC 3 ms
6,548 KB
testcase_24 AC 29 ms
6,548 KB
testcase_25 AC 29 ms
6,548 KB
testcase_26 AC 3 ms
6,548 KB
testcase_27 AC 3 ms
6,548 KB
testcase_28 AC 18 ms
6,548 KB
testcase_29 AC 2 ms
6,548 KB
testcase_30 AC 10 ms
6,548 KB
testcase_31 AC 4 ms
6,548 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import macros
macro Please(x): untyped = nnkStmtList.newTree()

Please use Nim-ACL
Please use Nim-ACL
Please use Nim-ACL


static:
  when not defined SecondCompile:
    # md5sum: 004fb116feb693202d320b197beb6a4d  atcoder.tar.xz

    template getFileName():string = instantiationInfo().filename
    let fn = getFileName()
    block:
      let (output, ex) = gorgeEx("if [ -e ./atcoder ]; then exit 1; else exit 0; fi")
      # doAssert ex == 0, "atcoder directory already exisits"
    discard staticExec("echo \"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\" | base64 -d > atcoder.tar.xz && tar -Jxvf atcoder.tar.xz")
    let (output, ex) = gorgeEx("nim cpp -d:release -d:SecondCompile -d:danger --path:./ --opt:speed --multimethods:on --warning[SmallLshouldNotBeUsed]:off --checks:off -o:a.out " & fn)
    discard staticExec("rm -rf ./atcoder");doAssert ex == 0, output;quit(0)


when defined SecondCompile:
  const DO_CHECK = false;const DEBUG = false
else:
  const DO_CHECK = true;const DEBUG = true
const
  USE_DEFAULT_TABLE = true
  DO_TEST = false

# see https://github.com/zer0-star/Nim-ACL/tree/master/src/atcoder/extra/header/chaemon_header.nim
include atcoder/extra/header/chaemon_header


proc solve() =
  let A, B, a, b = nextInt()
  var x = 0
  while true:
    if x mod A == a and x mod B == b:
      echo x;return
    x.inc

solve()

0