結果

問題 No.1644 Eight Digits
ユーザー Strorkis
提出日時 2021-08-13 21:31:48
言語 Rust
(1.83.0 + proconio)
結果
AC  
実行時間 4 ms / 1,000 ms
コード長 2,607 bytes
コンパイル時間 12,868 ms
コンパイル使用メモリ 379,696 KB
実行使用メモリ 5,248 KB
最終ジャッジ日時 2024-10-03 17:23:14
合計ジャッジ時間 14,222 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 25
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

pub mod io {
use std::io::{BufRead, ErrorKind};
pub fn scan<R: BufRead>(r: &mut R) -> Vec<u8> {
let mut res = Vec::new();
loop {
let buf = match r.fill_buf() {
Ok(buf) => buf,
Err(e) if e.kind() == ErrorKind::Interrupted => continue,
Err(e) => panic!("{}", e),
};
let (done, used, buf) = {
match buf.iter().position(u8::is_ascii_whitespace) {
Some(i) => (i > 0 || res.len() > 0, i + 1, &buf[..i]),
None => (buf.is_empty(), buf.len(), buf),
}
};
res.extend_from_slice(buf);
r.consume(used);
if done { return res; }
}
}
#[macro_export]
macro_rules! scan {
($r:expr, [$t:tt; $n:expr]) => {
(0..$n).map(|_| scan!($r, $t)).collect::<Vec<_>>()
};
($r:expr, [$t:tt]) => {
scan!($r, [$t; scan!($r, usize)])
};
($r:expr, ($($t:tt),*)) => {
($(scan!($r, $t)),*)
};
($r:expr, Usize1) => {
scan!($r, usize) - 1
};
($r:expr, Bytes) => {
io::scan($r)
};
($r:expr, String) => {
String::from_utf8(scan!($r, Bytes)).unwrap()
};
($r:expr, $t:ty) => {
scan!($r, String).parse::<$t>().unwrap()
};
}
#[macro_export]
macro_rules! input {
($($($v:ident)* : $t:tt),* $(,)?) => {
let stdin = std::io::stdin();
let ref mut reader = std::io::BufReader::new(stdin.lock());
$(let $($v)* = scan!(reader, $t);)*
};
}
}
// Reference: sansen's code
pub mod next_permutation {
pub trait NextPermutation<T> {
fn next_permutation(&mut self) -> bool;
}
impl<T: PartialOrd> NextPermutation<T> for [T] {
fn next_permutation(&mut self) -> bool {
self.windows(2).rposition(|a| a[0] < a[1]).map_or(false, |i| {
let j = self.iter().rposition(|x| self[i] < *x).unwrap();
self.swap(i, j);
self[(i + 1)..].reverse();
true
})
}
}
}
use next_permutation::NextPermutation;
fn main() {
input! {
k: u32,
}
let mut ans = 0;
let mut s = "12345678".chars().collect::<Vec<_>>();
while {
let n = s.iter().collect::<String>().parse::<u32>().unwrap();
if n % k == 0 {
ans += 1;
}
s.next_permutation()
} {}
println!("{}", ans);
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0