結果
問題 | No.32 貯金箱の憂鬱 |
ユーザー | Mi_Sawa |
提出日時 | 2017-02-17 00:55:27 |
言語 | Rust (1.77.0 + proconio) |
結果 |
AC
|
実行時間 | 1 ms / 5,000 ms |
コード長 | 2,276 bytes |
コンパイル時間 | 14,399 ms |
コンパイル使用メモリ | 388,708 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-07-23 02:29:30 |
合計ジャッジ時間 | 13,285 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1 ms
6,812 KB |
testcase_01 | AC | 1 ms
6,816 KB |
testcase_02 | AC | 1 ms
6,816 KB |
testcase_03 | AC | 1 ms
6,944 KB |
testcase_04 | AC | 1 ms
6,944 KB |
testcase_05 | AC | 1 ms
6,944 KB |
testcase_06 | AC | 1 ms
6,944 KB |
testcase_07 | AC | 1 ms
6,940 KB |
testcase_08 | AC | 1 ms
6,940 KB |
testcase_09 | AC | 1 ms
6,940 KB |
testcase_10 | AC | 1 ms
6,940 KB |
testcase_11 | AC | 1 ms
6,944 KB |
コンパイルメッセージ
warning: unused import: `std::io::BufRead` --> src/main.rs:13:13 | 13 | use std::io::BufRead; | ^^^^^^^^^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default warning: methods `nl` and `ns` are never used --> src/main.rs:56:8 | 5 | impl<BR: std::io::BufRead> Scanner<BR> { | -------------------------------------- methods in this implementation ... 56 | fn nl(&mut self) -> i64 { | ^^ ... 60 | fn ns(&mut self) -> String { | ^^ | = note: `#[warn(dead_code)]` on by default
ソースコード
struct Scanner<BR: std::io::BufRead> { buf_read: BR, } impl<BR: std::io::BufRead> Scanner<BR> { fn new(buf_read: BR) -> Scanner<BR> { Scanner { buf_read: buf_read } } fn read_until_f<P>(&mut self, predicate: P) -> std::io::Result<String> where P: std::ops::Fn(&u8) -> bool, { use std::io::BufRead; let mut buf = std::vec::Vec::new(); loop { let (done, used) = { let available: &[u8] = match self.buf_read.fill_buf() { Ok(b) => b, Err(ref e) if e.kind() == std::io::ErrorKind::Interrupted => continue, Err(e) => return Err(e), }; match available.iter().position(&predicate) { Some(i) => { buf.extend_from_slice(&available[..i + 1]); (true, i + 1) } None => { buf.extend_from_slice(available); (false, available.len()) } } }; self.buf_read.consume(used); if done || used == 0 { return match String::from_utf8(buf) { Ok(s) => Ok(s), Err(_) => Err(std::io::Error::new(std::io::ErrorKind::InvalidInput, "error")), } } } } fn next<T: std::str::FromStr>(&mut self) -> T where < T as std::str::FromStr >::Err: std::fmt::Debug { use ::std::str::FromStr; let mut with_delim = self.read_until_f(|&c| { c == b' ' || c == b'\n' }).unwrap(); with_delim.pop(); FromStr::from_str(with_delim.as_str()).unwrap() } fn ni(&mut self) -> i32 { self.next() } fn nl(&mut self) -> i64 { self.next() } fn ns(&mut self) -> String { self.next() } } fn main() { let stdin = std::io::stdin(); let mut scanner = Scanner::new(stdin.lock()); let v = vec![100, 25, 1]; let mut total = 0; for c in &v { total += scanner.ni() * c; } total %= 1000; let mut res = 0; for c in v { res += total / c; total %= c; } println!("{}", res); }