結果

問題 No.2829 GCD Divination
ユーザー maguroflymagurofly
提出日時 2024-08-02 21:46:07
言語 Rust
(1.77.0 + proconio)
結果
WA  
実行時間 -
コード長 568 bytes
コンパイル時間 11,666 ms
コンパイル使用メモリ 400,664 KB
実行使用メモリ 6,944 KB
最終ジャッジ日時 2024-08-02 21:46:47
合計ジャッジ時間 37,672 ms
ジャッジサーバーID
(参考情報)
judge2 / judge5
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
6,812 KB
testcase_01 AC 1 ms
6,944 KB
testcase_02 AC 1,683 ms
6,944 KB
testcase_03 WA -
testcase_04 WA -
testcase_05 WA -
testcase_06 WA -
testcase_07 WA -
testcase_08 WA -
testcase_09 WA -
testcase_10 WA -
testcase_11 WA -
testcase_12 WA -
testcase_13 WA -
testcase_14 WA -
testcase_15 WA -
testcase_16 WA -
testcase_17 WA -
testcase_18 WA -
testcase_19 WA -
testcase_20 WA -
testcase_21 WA -
testcase_22 AC 696 ms
6,940 KB
testcase_23 WA -
testcase_24 WA -
testcase_25 WA -
testcase_26 WA -
testcase_27 WA -
testcase_28 WA -
testcase_29 WA -
testcase_30 WA -
testcase_31 WA -
testcase_32 WA -
testcase_33 WA -
testcase_34 WA -
権限があれば一括ダウンロードができます
コンパイルメッセージ
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)]` on by default

ソースコード

diff #

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