結果
| 問題 |
No.47 ポケットを叩くとビスケットが2倍
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-09-03 15:46:18 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,382 bytes |
| コンパイル時間 | 12,293 ms |
| コンパイル使用メモリ | 389,520 KB |
| 実行使用メモリ | 6,816 KB |
| 最終ジャッジ日時 | 2024-11-23 19:52:22 |
| 合計ジャッジ時間 | 14,786 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 20 WA * 1 |
ソースコード
fn getline() -> String {
let mut __ret = String::new();
std::io::stdin().read_line(&mut __ret).ok();
return __ret;
}
fn getline_as_u64() -> u64 {
let l = getline();
let nlv: Vec<_> = l.trim().split(' ').collect();
nlv[0].parse::<u64>().unwrap()
}
fn main() {
let n: u64 = getline_as_u64();
let mut remain = Some(n);
let mut pocket: u64 = 1;
let mut hit = 0;
loop {
// まずはポケットを叩いてみるッス
let next = pocket * 2;
match remain {
Some(some_remain) => {
if some_remain == next {
// ポケットの中身と残数が同じになったらポンとやって終了
hit = hit + 1;
remain = None;
} else if some_remain > next {
// それでも残数のほうが多い場合、もう一度やる
hit = hit + 1;
pocket = next
} else {
// ポケットの中身のほうが多くなってしまう場合、そのままたたかずにポケットの中身をひとつ減らす
remain = Some(some_remain - 1);
pocket = pocket - 1;
}
}
_ => {
break;
}
}
}
println!("{}", hit)
}