結果
問題 | No.1415 100の倍数かつ正整数(1) |
ユーザー |
![]() |
提出日時 | 2021-03-05 22:41:28 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 1 ms / 2,000 ms |
コード長 | 6,958 bytes |
コンパイル時間 | 13,492 ms |
コンパイル使用メモリ | 384,264 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-10-07 03:29:50 |
合計ジャッジ時間 | 14,713 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 24 |
コンパイルメッセージ
warning: function `usize1` is never used --> src/main.rs:129:12 | 129 | pub fn usize1(n: usize) -> usize { | ^^^^^^ | = note: `#[warn(dead_code)]` on by default warning: function `bytes` is never used --> src/main.rs:134:12 | 134 | pub fn bytes(s: String) -> Vec<u8> { | ^^^^^
ソースコード
fn main() {input! {s: String,};if s.len() < 10 {let n: i64 = s.parse().unwrap();let ans = if n >= 0 { n / 100 } else { 0 };println!("{}", ans);} else {let s: Vec<_> = s.chars().collect();if s[0] == '-' {println!("0");return;}let ans: String = (&s[0..(s.len() - 2)]).iter().collect();println!("{}", ans);}}// from https://github.com/qryxip/competitive-programming-library/blob/master/crates/io/sourcefiles/input.rsmod input {//! Provides `input!` macro.//!//! # Example//!//! ```no_run//! #[macro_use]//! extern crate input as _;//!//! fn main() {//! // https://atcoder.jp/contests/abc166/tasks/abc166_b//!//! input! {//! n: usize,//! ass: [[{ input::usize1 }]],//! }//!//! let _: usize = n;//! let _: Vec<Vec<usize>> = ass;//! }//! ```use std::{cell::RefCell,fmt::Debug,io::{self, BufRead, Read},rc::Rc,str::{FromStr, SplitWhitespace},};#[macro_export]macro_rules! input {(from $scanner:ident; $($tt:tt)*) => {$crate::input_inner!(@scanner($scanner), @tts($($tt)*))};($($tt:tt)*) => {let __scanner = $crate::input::DEFAULT_SCANNER.with(|__scanner| __scanner.clone());let mut __scanner_ref = __scanner.borrow_mut();if let $crate::input::Scanner::Uninited = *__scanner_ref {*__scanner_ref = $crate::input::Scanner::stdin_auto().unwrap();}$crate::input_inner!(@scanner(__scanner_ref), @tts($($tt)*));::std::mem::drop(__scanner_ref);::std::mem::drop(__scanner);};}#[macro_export]macro_rules! input_inner {(@scanner($scanner:ident), @tts()) => {};(@scanner($scanner:ident), @tts(mut $single_tt_pat:tt : $readable:tt)) => {let mut $single_tt_pat = $crate::read!(from $scanner { $readable });};(@scanner($scanner:ident), @tts($single_tt_pat:tt : $readable:tt)) => {let $single_tt_pat = $crate::read!(from $scanner { $readable });};(@scanner($scanner:ident), @tts(mut $single_tt_pat:tt : $readable:tt, $($rest:tt)*)) => {$crate::input_inner!(@scanner($scanner), @tts(mut $single_tt_pat: $readable));$crate::input_inner!(@scanner($scanner), @tts($($rest)*));};(@scanner($scanner:ident), @tts($single_tt_pat:tt : $readable:tt, $($rest:tt)*)) => {$crate::input_inner!(@scanner($scanner), @tts($single_tt_pat: $readable));$crate::input_inner!(@scanner($scanner), @tts($($rest)*));};}#[macro_export]macro_rules! read {(from $scanner:ident { [$tt:tt] }) => {$crate::read!(from $scanner { [$tt; $crate::read!(from $scanner { usize })] })};(from $scanner:ident { [$tt:tt; $n:expr] }) => {(0..$n).map(|_| $crate::read!(from $scanner { $tt })).collect::<Vec<_>>()};(from $scanner:ident { ($($tt:tt),+) }) => {($($crate::read!(from $scanner { $tt })),*)};(from $scanner:ident { { $f:expr } }) => {$crate::input::FnOnceExt::<_>::call_once_from_reader($f, &mut $scanner)};(from $scanner:ident { $ty:ty }) => {<$ty as $crate::input::Readable>::read_from_scanner(&mut $scanner)};}#[macro_export]macro_rules! readable {($name:ident; |$scanner:ident| { $($body:tt)* }) => {$crate::readable!($name; |$scanner| -> () { $($body)* });};($name:ident; |$scanner:ident| $expr:expr) => {$crate::readable!($name; |$scanner| -> () { $expr });};($name:ident; |$scanner:ident| -> $output:ty { $($body:tt)* }) => {enum $name {}impl $crate::input::Readable for $name {type Output = $output;fn read_from_scanner(mut $scanner: &mut $crate::input::Scanner) -> $output {$($body)*}}};}#[inline]pub fn usize1(n: usize) -> usize {n - 1}#[inline]pub fn bytes(s: String) -> Vec<u8> {s.into()}#[doc(hidden)]pub trait FnOnceExt<A> {type Output;fn call_once_from_reader(this: Self, scanner: &mut Scanner) -> Self::Output;}impl<A, O, F> FnOnceExt<A> for FwhereA: FromStr,A::Err: Debug,F: FnOnce(A) -> O,{type Output = O;#[inline]fn call_once_from_reader(this: Self, scanner: &mut Scanner) -> O {this(A::read_from_scanner(scanner))}}pub enum Scanner {Uninited,Once {words: SplitWhitespace<'static>,},Lines {rdr: Box<dyn BufRead>,words: SplitWhitespace<'static>,},}impl Scanner {pub fn stdin_auto() -> io::Result<Self> {if cfg!(debug_assertions) {Ok(Self::lines(Box::leak(Box::new(io::stdin())).lock()))} else {Self::once(io::stdin())}}pub fn once<R: Read>(mut rdr: R) -> io::Result<Self> {let mut buf = String::with_capacity(1024);rdr.read_to_string(&mut buf)?;let words = Box::leak(buf.into_boxed_str()).split_whitespace();Ok(Self::Once { words })}pub fn lines<R: BufRead + 'static>(rdr: R) -> Self {Self::Lines {rdr: Box::new(rdr),words: "".split_whitespace(),}}pub fn parse_next_unwrap<T: FromStr>(&mut self) -> TwhereT::Err: Debug,{match self {Self::Uninited => None,Self::Once { words } => words.next(),Self::Lines { rdr, words } => words.next().or_else(|| {let mut line = "".to_owned();rdr.read_line(&mut line).unwrap();*words = Box::leak(line.into_boxed_str()).split_whitespace();words.next()}),}.expect("reached EOF").parse().unwrap()}}thread_local! {pub static DEFAULT_SCANNER: Rc<RefCell<Scanner>> = Rc::new(RefCell::new(Scanner::Uninited));}pub trait Readable {type Output;fn read_from_scanner(scanner: &mut Scanner) -> Self::Output;}impl<T: FromStr> Readable for TwhereT::Err: Debug,{type Output = Self;fn read_from_scanner(scanner: &mut Scanner) -> Self {scanner.parse_next_unwrap()}}}