結果
| 問題 |
No.2104 Multiply-Add
|
| コンテスト | |
| ユーザー |
kou_kkk
|
| 提出日時 | 2023-08-30 20:31:51 |
| 言語 | Nim (2.2.0) |
| 結果 |
CE
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 1,144 bytes |
| コンパイル時間 | 2,767 ms |
| コンパイル使用メモリ | 66,712 KB |
| 最終ジャッジ日時 | 2025-01-02 16:58:18 |
| 合計ジャッジ時間 | 3,260 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
/home/judge/data/code/Main.nim(41, 41) Error: tuple expected for tuple unpacking, but got 'seq[int]'
ソースコード
import algorithm, math, sequtils, strutils
proc pp(x, y: int): auto =
(0 - x.pred div y, succ x.pred mod y)
proc mp(x, y: int): auto =
let n = (x.abs.succ / y).ceil.int
(n, x + y * n)
proc mm(x, y: int): auto =
let n = 0 - (x.abs.succ / y.abs).ceil.int
(n, x + y * n)
template t(name, v1, v2, cmd): untyped =
block:
(n, `v1`) = `name`(`v1`, `v2`)
list.add [`cmd`, n]
continue
proc minAndList(x, y: int): auto =
var
list: seq[array[2, int]]
a = x
b = y
while a < 0 or a != b:
var n: int
if a == 0:
a = abs b
list.add [1, b.cmp 0]
continue
if b == 0:
b = abs a
list.add [2, a.cmp 0]
continue
if a < 0 and b < 0: t(mm, a, b, 1)
if a < 0: t(mp, a, b, 1)
if b < 0: t(mp, b, a, 2)
if a > b: t(pp, a, b, 1)
if a < b: t(pp, b, a, 2)
(a, list)
var a, b, c, d: int
(a, b, c, d) = stdin.readLine.split.map parseInt
var
(min1, list1) = minAndList(a, b)
(min2, list2) = minAndList(c, d)
if min1 != min2:
echo -1
quit()
reverse list2
list2.applyIt [it[0], -it[1]]
let ans = list1 & list2
echo len ans
for xs in ans:
echo xs.join " "
kou_kkk