結果

問題 No.3204 Permuted Integer
ユーザー atcoder8
提出日時 2025-07-18 21:43:12
言語 Rust
(1.83.0 + proconio)
結果
WA  
実行時間 -
コード長 953 bytes
コンパイル時間 13,494 ms
コンパイル使用メモリ 400,436 KB
実行使用メモリ 7,720 KB
最終ジャッジ日時 2025-07-18 21:43:39
合計ジャッジ時間 18,107 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 10 WA * 15
権限があれば一括ダウンロードができます

ソースコード

diff #

use std::collections::BTreeMap;

use proconio::input;

const MAX: usize = 10_usize.pow(9);

fn main() {
    input! {
        t: usize,
        nn: [usize; t],
    }

    let square_numbers = (0_usize..)
        .take_while(|i| i.pow(2) <= MAX)
        .map(|i| {
            let value = i.pow(2);
            (to_sorted_chars(value), value)
        })
        .collect::<Vec<_>>();
    let square_numbers: BTreeMap<_, _> = square_numbers.into_iter().rev().collect();

    for &n in &nn {
        let sorted_chars = to_sorted_chars(n);
        let square_number = square_numbers.get(&sorted_chars);
        match square_number {
            Some(value) => println!("{}", value),
            None => println!("-1"),
        }
    }
}

fn to_sorted_chars(n: usize) -> String {
    let mut chars = n
        .to_string()
        .chars()
        .filter(|&ch| ch != '0')
        .collect::<Vec<_>>();
    chars.sort_unstable();
    chars.iter().collect()
}
0