結果
問題 | No.2379 Burnside's Theorem |
ユーザー |
|
提出日時 | 2023-07-14 21:23:05 |
言語 | D (dmd 2.109.1) |
結果 |
AC
|
実行時間 | 10 ms / 2,000 ms |
コード長 | 1,402 bytes |
コンパイル時間 | 4,007 ms |
コンパイル使用メモリ | 171,872 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-16 06:08:41 |
合計ジャッジ時間 | 4,714 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 20 |
ソースコード
import std;void main () {long N = readln.chomp.to!long;solve(N);}void solve (long N) {auto fac = Factors(N);if (fac.factor.length <= 3) {writeln("Yes");} else {writeln("No");}}struct Factors {long target;long[] factor;long[] pow;bool is_prime () {if (target <= 0) {return false;}if (factor.length == 2 && pow[1] == 1) {return true;}return false;}long[] combine_factor () {if (target <= 0) {return [];}long[] ret;foreach (i, x; pow) {foreach (k; 0..x) {ret ~= factor[i];}}return ret;}this (long target_) {{ // check inputassert(0 < target_);}target = target_;factor = [];pow = [];pow ~= 1;factor ~= 1;foreach (i; 2..target_) {if (target_ < i*i) {break;}if (target_ % i == 0) {factor ~= i;pow ~= 0;while (target_ % i == 0) {target_ /= i;pow[$-1]++;}}}if (target_ != 1) {factor ~= target_;pow ~= 1;}}}