結果

問題 No.2829 GCD Divination
コンテスト
ユーザー magurofly
提出日時 2024-08-02 21:46:07
言語 Rust
(1.94.0 + proconio + num + itertools)
コンパイル:
/usr/bin/rustc_custom
実行:
./target/release/main
結果
WA  
実行時間 -
コード長 568 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 12,148 ms
コンパイル使用メモリ 196,832 KB
実行使用メモリ 7,976 KB
最終ジャッジ日時 2026-04-03 19:34:35
合計ジャッジ時間 16,632 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge3_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 4 WA * 31
権限があれば一括ダウンロードができます
コンパイルメッセージ
warning: variable `N` should have a snake case name
  --> src/main.rs:16:3
   |
16 |         N: usize,
   |         ^ help: convert the identifier to snake case: `n`
   |
   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default

ソースコード

diff #
raw source code

use proconio::input;
use std::collections::HashMap;

fn gcd(x: usize, y: usize) -> usize {
	if x < y {
		return gcd(y, x);
	}
	if y == 0 {
		return y;
	}
	gcd(y, x % y)
}

fn main() {
	input! {
		N: usize,
	}
	
	let mut dp = HashMap::new();
	fn rec(dp: &mut HashMap<usize, f64>, n: usize) -> f64 {
		if n == 1 {
			return 0.0;
		}
		if let Some(&ans) = dp.get(&n) {
			return ans;
		}
		let mut sum = 0.0;
		for i in 1 ..= n {
			sum += 1.0 + rec(dp, gcd(n, i));
		}
		let ans = sum / (n - 1) as f64;
		dp.insert(n, ans);
		ans
	}
	
	println!("{}", rec(&mut dp, N));
}
0