結果
| 問題 |
No.2829 GCD Divination
|
| コンテスト | |
| ユーザー |
naut3
|
| 提出日時 | 2024-08-02 23:02:28 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
MLE
|
| 実行時間 | - |
| コード長 | 1,113 bytes |
| コンパイル時間 | 11,817 ms |
| コンパイル使用メモリ | 402,396 KB |
| 実行使用メモリ | 715,000 KB |
| 最終ジャッジ日時 | 2024-08-02 23:02:52 |
| 合計ジャッジ時間 | 18,626 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | MLE * 1 -- * 34 |
ソースコード
#![allow(non_snake_case)]
#[allow(unused_imports)]
use proconio::{fastout, input, marker::*};
#[fastout]
fn main() {
input! {
N: usize,
}
let mut sieve = vec![vec![]; 10_000_010];
for p in 2..=10_000_000 {
if sieve[p].is_empty() {
for q in (p * 2..10_000_010).step_by(p) {
sieve[q].push(p);
}
}
}
let mut dp = vec![0.; 10_000_010];
for k in 2..=10_000_000 {
let mut s = 0.;
let mut cnt = 0;
for &d in sieve[k].iter() {
if sieve[k].len() == 1 {
s += dp[d];
cnt += 1;
} else if d == sieve[k][0] {
let m = sieve[k][1];
s += dp[d] * (m - 1) as f32;
cnt += m - 1;
} else {
let m = sieve[k][0];
s += dp[d] * (m - 1) as f32;
cnt += m - 1;
}
}
dp[k] = s + (1 * (k - 1 - cnt)) as f32;
dp[k] /= (k - 1) as f32;
dp[k] += (k) as f32 / (k - 1) as f32;
}
println!("{}", dp[N] - 1.);
}
naut3