結果
| 問題 |
No.1665 quotient replace
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2022-10-02 17:44:21 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
AC
|
| 実行時間 | 68 ms / 3,000 ms |
| コード長 | 1,020 bytes |
| コンパイル時間 | 29,780 ms |
| コンパイル使用メモリ | 378,016 KB |
| 実行使用メモリ | 32,256 KB |
| 最終ジャッジ日時 | 2024-12-25 14:02:13 |
| 合計ジャッジ時間 | 17,135 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 41 |
ソースコード
fn get_factors(n: usize) -> Vec<usize> {
let mut ret = (0..=n).collect::<Vec<_>>();
for i in 2..=(n as f64).sqrt().ceil() as usize {
if ret[i] != i { continue; }
for j in i..=n/i {
ret[i*j] = i;
}
}
ret
}
fn main() {
let mut n = String::new();
std::io::stdin().read_line(&mut n).ok();
let n: usize = n.trim().parse().unwrap();
let mut a = String::new();
std::io::stdin().read_line(&mut a).ok();
let a: Vec<usize> = a.trim().split_whitespace().map(|s| s.parse().unwrap()).collect();
let factors = get_factors(1000000);
let mut factor_cnt = vec![0usize; 1000001];
for i in 2..=1000000{
if i == factors[i] {
factor_cnt[i] = 1;
} else {
factor_cnt[i] = factor_cnt[i/factors[i]] + 1;
}
}
let result = (0..n).map(|i| factor_cnt[a[i]]).filter(|&v| v > 0).fold(0usize, |x, y| x ^ y);
if result == 0 {
println!("black");
} else {
println!("white");
}
}