結果
問題 | No.3 ビットすごろく |
ユーザー | nobuta05 |
提出日時 | 2016-08-22 21:26:51 |
言語 | Rust (1.77.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 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1 ms
5,248 KB |
testcase_01 | AC | 1 ms
5,248 KB |
testcase_02 | AC | 1 ms
5,248 KB |
testcase_03 | TLE | - |
testcase_04 | -- | - |
testcase_05 | -- | - |
testcase_06 | -- | - |
testcase_07 | -- | - |
testcase_08 | -- | - |
testcase_09 | -- | - |
testcase_10 | -- | - |
testcase_11 | -- | - |
testcase_12 | -- | - |
testcase_13 | -- | - |
testcase_14 | -- | - |
testcase_15 | -- | - |
testcase_16 | -- | - |
testcase_17 | -- | - |
testcase_18 | -- | - |
testcase_19 | -- | - |
testcase_20 | -- | - |
testcase_21 | -- | - |
testcase_22 | -- | - |
testcase_23 | -- | - |
testcase_24 | -- | - |
testcase_25 | -- | - |
testcase_26 | -- | - |
testcase_27 | -- | - |
testcase_28 | -- | - |
testcase_29 | -- | - |
testcase_30 | -- | - |
testcase_31 | -- | - |
testcase_32 | -- | - |
コンパイルメッセージ
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"); } }