結果
| 問題 |
No.3204 Permuted Integer
|
| コンテスト | |
| ユーザー |
yimiya(いみや)
|
| 提出日時 | 2025-07-18 22:26:16 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 269 ms / 2,000 ms |
| コード長 | 2,400 bytes |
| コンパイル時間 | 3,060 ms |
| コンパイル使用メモリ | 301,516 KB |
| 実行使用メモリ | 7,716 KB |
| 最終ジャッジ日時 | 2025-07-18 23:40:17 |
| 合計ジャッジ時間 | 8,052 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 26 |
ソースコード
#include <bits/stdc++.h>
#include <iostream>
#include <vector>
#include <string>
#include <stack>
#include <algorithm>
#include <iomanip>
#include <chrono>
#pragma GCC target ("avx")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#define rep(i,n) for (ll i = 0;i < (ll)(n);i++)
#define Yes cout << "Yes" << "\n"// YESの短縮
#define No cout << "No" << "\n"// NOの短縮
#define rtr0 return(0)//return(0)の短縮
#define gyakugen(x) modpow(x,mod - 2,mod);
#define agyakugen(x) modpow(x,amod - 2,amod);
#define st(A) sort(A.begin(),A.end());
#define rst(A) sort(A.rbegin(),A.rend());
using namespace std;
//using namespace ranges;
using ll = long long;//63bit型整数型
using ld = long double;//doubleよりも長い値を保存できるもの
using ull = unsigned long long;//符号がない64bit型整数
ll mod = 998244353;
ll amod = 1000000007;
ll MINF = -5000000000000000000;
ll INF = 5000000000000000000;
ll inf = 2000000000;
ll minf = -2000000000;
ll BAD = -1;
ll zero = 0;
ld EPS = 1e-10;
int main(){
ll T;
cin >> T;
map<tuple<ll,ll,ll,ll,ll,ll,ll,ll,ll,ll>,ll>ans;
for(int i = 0;i*i<=1e9;i++){
string s = to_string(i*i);
tuple<ll,ll,ll,ll,ll,ll,ll,ll,ll,ll>X;
for(int ii = 0;ii<s.size();ii++){
ll x = s[ii]-'0';
if(x==0)get<0>(X)++;
if(x==1)get<1>(X)++;
if(x==2)get<2>(X)++;
if(x==3)get<3>(X)++;
if(x==4)get<4>(X)++;
if(x==5)get<5>(X)++;
if(x==6)get<6>(X)++;
if(x==7)get<7>(X)++;
if(x==8)get<8>(X)++;
if(x==9)get<9>(X)++;
}
if(!ans.count(X))ans[X]=min((ll)(i*i),INF);
}
//cout << ans[{0,0,0,0,0,0,0,0,0,0}]<<"\n";
while(T--){
ll N;
cin >> N;
string s = to_string(N);
tuple<ll,ll,ll,ll,ll,ll,ll,ll,ll,ll>Y ={0,0,0,0,0,0,0,0,0,0};
for(int ii = 0;ii<s.size();ii++){
ll x = s[ii]-'0';
if(x==0)get<0>(Y)++;
if(x==1)get<1>(Y)++;
if(x==2)get<2>(Y)++;
if(x==3)get<3>(Y)++;
if(x==4)get<4>(Y)++;
if(x==5)get<5>(Y)++;
if(x==6)get<6>(Y)++;
if(x==7)get<7>(Y)++;
if(x==8)get<8>(Y)++;
if(x==9)get<9>(Y)++;
}
//cout << get<0>(Y)<<" "<<get<1>(Y)<<"\n";
ll res = INF;
ll p = get<0>(Y);
for(int i = p;i>=0;i--){
get<0>(Y)=i;
if(ans.count(Y))res = min(ans[Y],res);
}
if(res==INF)cout<<-1<<"\n";
else cout<<res<<"\n";
}
}
yimiya(いみや)