結果
| 問題 |
No.9008 空白区切りで与えられる数値データの合計値を求める(テスト用)
|
| ユーザー |
|
| 提出日時 | 2017-06-16 12:56:16 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
AC
|
| 実行時間 | 30 ms / 2,000 ms |
| コード長 | 1,724 bytes |
| コンパイル時間 | 12,988 ms |
| コンパイル使用メモリ | 399,060 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-10-01 06:42:50 |
| 合計ジャッジ時間 | 14,145 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 15 |
ソースコード
use std::io::{self, Read};
use std::iter::Peekable;
struct Scanner<S: Iterator> {
stream: Peekable<S>,
}
impl<S: Iterator<Item = u8>> Scanner<S> {
pub fn new(stream: Peekable<S>) -> Scanner<S> {
Scanner { stream }
}
pub fn next_usize(&mut self) -> Option<usize> {
self.skip_unprintable();
let mut n: usize = 0;
if let None = self.stream.peek() {
return None;
}
while let Some(b) = self.stream.next() {
if b < 33 || b > 126 {
break;
}
if b < b'0' || b > b'9' {
return None;
}
n *= 10;
n += (b - b'0') as usize;
}
Some(n)
}
pub fn next_u64(&mut self) -> Option<u64> {
self.skip_unprintable();
let mut n: u64 = 0;
if let None = self.stream.peek() {
return None;
}
while let Some(b) = self.stream.next() {
if b < 33 || b > 126 {
break;
}
if b < b'0' || b > b'9' {
return None;
}
n *= 10;
n += (b - b'0') as u64;
}
Some(n)
}
fn skip_unprintable(&mut self) {
while let Some(&b) = self.stream.peek() {
if b >= 33 && b <= 126 {
break;
}
self.stream.next();
}
}
}
fn main() {
let mut scanner = Scanner::new(io::stdin().bytes()
.filter_map(|b| b.ok()).peekable());
let n = scanner.next_usize().unwrap();
let mut sum = 0;
for _ in 0..n {
sum += scanner.next_u64().unwrap();
}
println!("{}", sum);
}