結果
問題 |
No.3 ビットすごろく
|
ユーザー |
![]() |
提出日時 | 2016-08-22 21:26:51 |
言語 | Rust (1.83.0 + proconio) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,345 bytes |
コンパイル時間 | 14,614 ms |
コンパイル使用メモリ | 378,388 KB |
実行使用メモリ | 8,448 KB |
最終ジャッジ日時 | 2024-11-07 22:37:59 |
合計ジャッジ時間 | 21,847 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 3 TLE * 1 -- * 29 |
コンパイルメッセージ
warning: unreachable expression --> src/main.rs:49:5 | 25 | / match vec.binary_search(&p) { 26 | | Ok(_) => {return -1}, 27 | | Err(_) => { 28 | | let inc = num2bin(p as u32); ... | 47 | | }, 48 | | } | |_____- any code following this `match` expression is unreachable, as all arms diverge 49 | -1 | ^^ unreachable expression | = note: `#[warn(unreachable_code)]` on by default warning: variable does not need to be mutable --> src/main.rs:32:17 | 32 | let mut ret1 = judge(p+inc, max, &vec); | ----^^^^ | | | help: remove this `mut` | = note: `#[warn(unused_mut)]` on by default warning: variable does not need to be mutable --> src/main.rs:33:17 | 33 | let mut ret2 = judge(p-inc, max, &vec); | ----^^^^ | | | help: remove this `mut`
ソースコード
use std::io; fn num2bin(p: u32) -> u32 { let mut cnt = 0u32; let mut x = p; while x > 0 { cnt += x & 1; x = x >> 1; } cnt } fn judge(p: i32, max: i32, arr: &Vec<i32>) -> i32 { let mut vec = Vec::new(); vec.extend_from_slice(&arr); vec.sort(); if p == max { return 1; } else if p < 1 || max < p { return -1; } match vec.binary_search(&p) { Ok(_) => {return -1}, Err(_) => { let inc = num2bin(p as u32); let inc = inc as i32; vec.push(p); let mut ret1 = judge(p+inc, max, &vec); let mut ret2 = judge(p-inc, max, &vec); if ret1 > 0 && ret2 > 0 { return std::cmp::min(ret1, ret2) + 1; } else if ret1 > 0 && ret2 < 0 { return ret1 + 1; } else if ret2 > 0 { return ret2 + 1; } else { return -1; } }, } -1 } fn main() { let mut num = String::new(); io::stdin().read_line(&mut num).ok().expect("ERROR"); let num: i32 = num.trim().parse().ok().expect("ERROR"); let ret = judge(1, num, &Vec::new()); if ret > 0 { println!("{}", ret); } else { println!("-1"); } }