結果
| 問題 |
No.1048 Zero (Advanced)
|
| ユーザー |
nadeshino
|
| 提出日時 | 2020-05-08 21:43:37 |
| 言語 | Nim (2.2.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 1,967 bytes |
| コンパイル時間 | 3,266 ms |
| コンパイル使用メモリ | 70,620 KB |
| 実行使用メモリ | 6,948 KB |
| 最終ジャッジ日時 | 2024-07-04 00:20:04 |
| 合計ジャッジ時間 | 4,065 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 15 |
コンパイルメッセージ
/home/judge/data/code/Main.nim(1, 8) Warning: imported and not used: 'algorithm' [UnusedImport] /home/judge/data/code/Main.nim(1, 27) Warning: imported and not used: 'math' [UnusedImport]
ソースコード
import algorithm, macros, math, sequtils, strutils, tables
# import bitops, lenientops, deques,
# heapqueue, sets, sugar
let read* = iterator: string =
while true: (for s in stdin.readLine.split: yield s)
template input*(T: static[typedesc]): untyped =
when T is int: read().parseInt
elif T is float: read().parseFloat
elif T is string: read()
elif T is char: read()[0]
macro dump*(args: varargs[typed]): untyped =
result = newNimNode(nnkStmtList)
for x in args:
let s = toStrLit(x)
result.add quote do: stderr.write `s`, " = ", `x`, " "
result.add quote do: stderr.write "\n"
proc `|=`*(n: var int, m: int) = n = n or m
proc `|=`*(n: var bool, m: bool) = n = n or m
proc `&=`*(n: var int, m: int) = n = n and m
proc `&=`*(n: var bool, m: bool) = n = n and m
proc `^=`*(n: var int, m: int) = n = n xor m
proc `^=`*(n: var bool, m: bool) = n = n xor m
proc `%=`*(n: var int, m: int) = n = n mod m
proc `/=`*(n: var int, m: int) = n = n div m
proc `<<=`*(n: var int, m: int) = n = n shl m
proc `>>=`*(n: var int, m: int) = n = n shr m
proc `<?=`*(n: var SomeNumber, m: SomeNumber) = n = min(n, m)
proc `>?=`*(n: var SomeNumber, m: SomeNumber) = n = max(n, m)
proc newSeq2*[T](n1, n2: Natural): seq[seq[T]] = newSeqWith(n1, newSeq[T](n2))
proc newSeq3*[T](n1, n2, n3: Natural): seq[seq[seq[T]]] = newSeqWith(n1, newSeqWith(n2, newSeq[T](n3)))
proc newSeq4*[T](n1, n2, n3, n4: Natural): seq[seq[seq[seq[T]]]] = newSeqWith(n1, newSeqWith(n2, newSeqWith(n3, newSeq[T](n4))))
# -------------------------------------------------- #
let L, R, M, K = input(int)
var min, max: int
if R - L + 1 >= M:
min = 0
max = M - 1
else:
let modL = L mod M
let modR = R mod M
if modL < modR:
min = modL
max = modR
else:
min = 0
max = M - 1
let sumMin = min * K
let sumMax = max * K
if sumMax - sumMin + 1 >= M:
echo "Yes"
elif (sumMax mod M) < (sumMin mod M):
echo "Yes"
elif sumMin mod M == 0:
echo "Yes"
else:
echo "No"
nadeshino