結果
問題 |
No.3204 Permuted Integer
|
ユーザー |
|
提出日時 | 2025-07-18 22:07:31 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 242 ms / 2,000 ms |
コード長 | 1,241 bytes |
コンパイル時間 | 12,596 ms |
コンパイル使用メモリ | 393,692 KB |
実行使用メモリ | 7,716 KB |
最終ジャッジ日時 | 2025-07-18 23:39:40 |
合計ジャッジ時間 | 17,141 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 26 |
ソースコード
use std::collections::BTreeMap; use proconio::input; const MAX: usize = 10_usize.pow(9); fn main() { input! { t: usize, nn: [usize; t], } let mut square_numbers_per_num_zeros = vec![BTreeMap::new(); 10]; for i in 0_usize.. { let i2 = i.pow(2); if i2 > MAX { break; } let (num_zeros, sorted_chars) = parse(i2); let square_numbers = &mut square_numbers_per_num_zeros[num_zeros]; if !square_numbers.contains_key(&sorted_chars) { square_numbers.insert(sorted_chars, i2); } } for &n in &nn { let (num_zeros, sorted_chars) = parse(n); let square_number = square_numbers_per_num_zeros[..=num_zeros] .iter() .filter_map(|square_numbers| square_numbers.get(&sorted_chars)) .min(); match square_number { Some(value) => println!("{}", value), None => println!("-1"), } } } fn parse(n: usize) -> (usize, String) { let mut chars: Vec<_> = n.to_string().chars().collect(); chars.sort_unstable(); let num_zeros = chars.iter().take_while(|&&ch| ch == '0').count(); (num_zeros, chars[num_zeros..].iter().collect()) }