結果

問題 No.2379 Burnside's Theorem
ユーザー InTheBloom
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

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 input
assert(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;
}
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0