結果
問題 |
No.3204 Permuted Integer
|
ユーザー |
|
提出日時 | 2025-07-18 22:43:44 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 391 ms / 2,000 ms |
コード長 | 1,562 bytes |
コンパイル時間 | 15,557 ms |
コンパイル使用メモリ | 397,420 KB |
実行使用メモリ | 9,252 KB |
最終ジャッジ日時 | 2025-07-18 23:40:55 |
合計ジャッジ時間 | 20,714 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 26 |
コンパイルメッセージ
warning: unused import: `HashSet` --> src/main.rs:1:33 | 1 | use std::collections::{HashMap, HashSet}; | ^^^^^^^ | = note: `#[warn(unused_imports)]` on by default
ソースコード
use std::collections::{HashMap, HashSet}; use proconio::input; fn main() { input! { t: usize, } let mut sq: HashMap<Vec<(usize, usize)>, usize> = HashMap::new(); for i in (0..=100000usize).rev() { let mut x = i * i; let mut d: HashMap<usize, usize> = HashMap::new(); while x > 0 { let y = x % 10; *d.entry(y).or_insert(0) += 1; x /= 10; } let mut d_vec: Vec<(usize, usize)> = d.into_iter().collect(); d_vec.sort(); sq.insert(d_vec, i * i); } for _ in 0..t { input! { mut n: usize, } let mut d: HashMap<usize, usize> = HashMap::new(); while n > 0 { let x = n % 10; *d.entry(x).or_insert(0) += 1; n /= 10; } let mut ans = 1e18 as usize; loop { let mut d_vec: Vec<(usize, usize)> = d.clone().into_iter().collect(); d_vec.sort(); if sq.contains_key(&d_vec) { ans = ans.min(*sq.get(&d_vec).unwrap()); } if d.contains_key(&0) { if let Some(count) = d.get_mut(&0) { if *count > 0 { *count -= 1; } else { d.remove(&0); } } } else { break; } } if ans == 1e18 as usize { println!("-1"); } else { println!("{}", ans); } } }