結果

問題 No.2846 Birthday Cake
ユーザー koba-e964
提出日時 2024-08-25 01:24:19
言語 Rust
(1.83.0 + proconio)
結果
AC  
実行時間 227 ms / 2,000 ms
コード長 1,433 bytes
コンパイル時間 12,902 ms
コンパイル使用メモリ 391,012 KB
実行使用メモリ 13,176 KB
最終ジャッジ日時 2024-08-25 01:24:38
合計ジャッジ時間 18,004 ms
ジャッジサーバーID
(参考情報)
judge1 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 34
権限があれば一括ダウンロードができます

ソースコード

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

use std::io::Read;
fn get_word() -> String {
let stdin = std::io::stdin();
let mut stdin=stdin.lock();
let mut u8b: [u8; 1] = [0];
loop {
let mut buf: Vec<u8> = Vec::with_capacity(16);
loop {
let res = stdin.read(&mut u8b);
if res.unwrap_or(0) == 0 || u8b[0] <= b' ' {
break;
} else {
buf.push(u8b[0]);
}
}
if buf.len() >= 1 {
let ret = String::from_utf8(buf).unwrap();
return ret;
}
}
}
fn get<T: std::str::FromStr>() -> T { get_word().parse().ok().unwrap() }
// https://yukicoder.me/problems/no/2846 (3)
// irb(main):009> [24,22,21,20,18,16,15,14,13,12,11,10,9,8,7,6,5].reduce{|a,b|a.lcm(b)}
// => 720720
// 23, 19, 17 720720 DP
fn main() {
let k: usize = get();
let n: usize = get();
const W: usize = 720_720;
let prs = [23, 19, 17];
let mut dp = vec![0i64; W + 1];
dp[0] = 1;
for _ in 0..k {
let mut ep = vec![0; W + 1];
for i in 1..n + 1 {
if W % i != 0 { continue; }
let x = W / i;
for j in x..W + 1 {
ep[j] += dp[j - x];
}
}
dp = ep;
}
let mut ans = dp[W];
for &p in &prs {
if k == p {
ans += 1;
}
}
println!("{}", ans);
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0