結果
問題 | No.847 Divisors of Power |
ユーザー | 6soukiti29 |
提出日時 | 2019-07-07 09:49:21 |
言語 | Nim (2.2.0) |
結果 |
CE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,094 bytes |
コンパイル時間 | 1,383 ms |
コンパイル使用メモリ | 66,304 KB |
最終ジャッジ日時 | 2024-07-02 05:46:51 |
合計ジャッジ時間 | 1,949 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
/home/judge/data/code/Main.nim(7, 33) Error: type mismatch: got 'seq[BiggestInt]' for 'map(split(readLine(stdin), {' ', '\t', '\v', '\r', '\n', '\f'}, -1), parseBiggestInt)' but expected 'tuple'
ソースコード
import sequtils,strutils,algorithm type prime = tuple[i : int64, n : int64] var N, K, M : int64 P = newSeq[int64](0) (N, K, M) = stdin.readline.split.map(parseBiggestInt) proc `^`(a: int64, b : int64) : int64 = if b == 0: return 1 elif b == 1: return a elif b mod 2 == 0: return (a * a) ^ (b div 2) else: return a * (a ^ (b - 1)) var i : int64 = 2 ps = newSeq[prime](0) while i * i <= N: while N mod i == 0: N = N div i P.add(i) i += 1 if N > 1: P.add(N) P.sort(cmp) for j, p in P: if j == 0: ps.add((p, 1.int64)) elif p == P[j - 1]: ps[^1].n += 1 else: ps.add((p, 1.int64)) var cnt = newSeqWith(ps.len(),0.int64) ans = 0 for i, p in ps: ps[i].n *= K proc dfs(k : int) = var z : int64 = 1 for i,c in cnt: z *= ps[i].i ^ c if z > M: return ans += 1 for i in k..<cnt.len: if cnt[i] == ps[i].n: continue cnt[i] += 1 dfs(i) cnt[i] -= 1 return dfs(0) echo ans