求HACK,悬2关
查看原帖
求HACK,悬2关
681103
huaji_huaji楼主2023/9/8 21:56
#include <bits/stdc++.h>
#define int long long
using namespace std;
inline int read(){
    int x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-f;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
    return x*f;
}
inline void write(int x){
    if(x<0){
        putchar('-');
        x=-x;
    }
    if(x>9)write(x/10);
    putchar(x%10+'0');
}
inline int _min(int __a,int __b){return __a<__b?__a:__b;}
inline int _max(int __a,int __b){return __a>__b?__a:__b;}
int n;
int a[10];
inline pair<int,int>get_min(){
    int res=1e9,resi=0;
    for(int i=1;i<=9;i++){
        if(a[i]<=res){res=a[i];resi=i;}
    }
    return {res,resi};
}
int WS;
string ans="";
pair<int,int>Min;
//first是钱,second是数
signed main(){
    n=read();
    for(int i=1;i<=9;i++)a[i]=read();
    Min=get_min();
    WS=n/Min.first;
    for(int i=1;i<=WS;i++){
        ans+=to_string(Min.second);
        n-=Min.first;
    }
    ans=' '+ans;
    for(int i=1;i<=WS;i++){
        for(int j=9;j>Min.second;j--){
            if(n>=a[j]-Min.first){
                n-=a[j]-Min.first;
                ans[i]=j+'0';
            }
        }
    }
    for(int i=1;i<=WS;i++)putchar(ans[i]);
    
    return 0;
}
2023/9/8 21:56
加载中...