题解:B4224 [常州市程序设计小能手 2024] 最小值

· · 题解

题目传送门

Solution

这题我的思路是推结论,首先不难发现如果可以使用的数字中有 2 的话,那么答案必定是 2,同理,3,5,7 也是如此。如果这四个质数都没有的话,那么先看有没有 1,如果有,那么答案就是 11。接着再看 89,如果有,输出 89。然后再看 4,9,有的话要分类讨论:如果有 0,那么就输出 409;否则就输出 449。最后如果这些都没有就输出 -1

Code

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
map<int,bool> mp;//使用map去看某个数字是否存在
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++){
        int x;
        cin>>x;
        mp[x]=true;
    }
    if(mp[2]) cout<<2<<"\n";
    else if(mp[3]) cout<<3<<"\n";
    else if(mp[5]) cout<<5<<"\n";
    else if(mp[7]) cout<<7<<"\n";
    else if(mp[1]) cout<<11<<"\n";
    else if(mp[8]&&mp[9]) cout<<89<<"\n";
    else if(mp[4]&&mp[9]){
        if(mp[0]) cout<<409<<"\n";
        else cout<<449<<"\n";
    }
    else cout<<-1<<"\n";
    return 0;
}