結果

問題 No.3717 GCD LCM GCD
コンテスト
ユーザー 👑 seekworser
提出日時 2026-09-18 23:31:21
言語 Nim
(2.2.10 + ACL)
コンパイル:
nim --nimcache=~ --hints:off -o:a.out -d:release cpp _filename_
実行:
./a.out
結果
AC  
実行時間 278 ms / 2,000 ms
+ 693µs
コード長 14,791 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 4,250 ms
コンパイル使用メモリ 99,712 KB
実行使用メモリ 26,752 KB
最終ジャッジ日時 2026-09-18 23:31:28
合計ジャッジ時間 6,281 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 8
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

template originalSource() =
 # {.checks: off.}
 include cplib/tmpl/citrus
 import cplib/modint/modint
 import cplib/math/primefactor
 import cplib/collections/defaultdict
 type mint = modint998244353_barrett
 
 var n, k = input(int)
 var a = newSeqWith(n, input(int))
 var d = initDefaultDict[int, seq[int]](newSeq[int]())
 for x in a:
     for (p, c) in x.primefactor_tuple:
         d[p].add(c)
 
 var ans = mint(1)
 for p in d.keys:
     var pos = n div k - 1 - (n-d[p].len)
     debug(p, d[p], pos)
     if pos notin 0..<d[p].len: continue
     d[p].sort
     # var pos = k - 1 - (n - d[p].len)
     # debug(pos, d[p])
     ans *= mint(p).pow(d[p][pos])
 print(ans.val)
 



# https://github.com/kemuniku/cplib
import macros;macro cplibRestore(s:static[string]):untyped = parseStmt(s)
cplibRestore("import base64\x0Amacro cplibUnpackSource(): untyped =\x0A    # \xE3\x82\xB3\xE3\x83\xB3\xE3\x83\x91\xE3\x82\xA4\xE3\x83\xAB\xE6\x99\x82\xE3\x81\xAB\xE5\xB1\x95\xE9\x96\x8B\xE6\xB8\x88\xE3\x81\xBF\xE3\x82\xB3\xE3\x83\xBC\xE3\x83\x89\xE3\x82\x92\xE5\xBE\xA9\xE5\x85\x83\xE3\x81\x99\xE3\x82\x8B\xE3\x80\x82\x0A    let z = decode(\"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\")\x0A    var s = \"\"\x0A    var i = 0\x0A    while i < z.len:\x0A        let f = ord(z[i])\x0A        inc i\x0A        for b in 0..<8:\x0A            if i >= z.len: break\x0A            if (f and (1 shl b)) == 0:\x0A                s.add(z[i])\x0A                inc i\x0A            else:\x0A                let d = ord(z[i])*256+ord(z[i+1])\x0A                let n = ord(z[i+2])+3\x0A                i += 3\x0A                for j in 0..<n: s.add(s[s.len-d])\x0A    result = parseStmt(s)\x0AcplibUnpackSource()\x0A")
0