結果
問題 |
No.101 ぐるぐる!あみだくじ!
|
ユーザー |
|
提出日時 | 2017-04-13 16:25:37 |
言語 | D (dmd 2.109.1) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 627 bytes |
コンパイル時間 | 614 ms |
コンパイル使用メモリ | 109,272 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-12 18:40:49 |
合計ジャッジ時間 | 1,728 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 37 |
コンパイルメッセージ
/home/linuxbrew/.linuxbrew/opt/dmd/include/dlang/dmd/std/numeric.d(2999): Warning: cannot inline function `std.numeric.gcdImpl!uint.gcdImpl`
ソースコード
import std.algorithm, std.conv, std.range, std.stdio, std.string; import std.numeric; // gcd void main() { auto n = readln.chomp.to!size_t; auto k = readln.chomp.to!size_t; auto bi = k.iota.map!(_ => readln.split.to!(size_t[]).front - 1).array; auto ci = new size_t[](n); foreach (i; 0..n) { auto j = i; foreach (b; bi) { if (j == b) ++j; else if (j == b + 1) --j; } ci[i] = j; } auto di = new int[](n); foreach (i; 0..n) { auto j = i, d = 0; do { j = ci[j]; ++d; } while (j != i); di[i] = d; } writeln(di.fold!((a, b) => a / gcd(a, b) * b)); }