結果
| 問題 |
No.3204 Permuted Integer
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-07-18 22:40:23 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,554 bytes |
| コンパイル時間 | 18,423 ms |
| コンパイル使用メモリ | 397,532 KB |
| 実行使用メモリ | 9,252 KB |
| 最終ジャッジ日時 | 2025-07-18 22:40:51 |
| 合計ジャッジ時間 | 23,865 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 9 WA * 16 |
コンパイルメッセージ
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 {
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);
}
}
}