链接:
https://www.nowcoder.com/acm/contest/128/F
来源:牛客网
来源:牛客网
题目分析:这道题首先要保证位数尽量的多,所以先找出花费最小的那个求出最大的位数,然后由高位到地位一次替换为较大的数字。
#include<bits/stdc++.h>
using namespace std;
int a[101];
int main(){
int n;
while(~scanf("%d",&n)){
int minn=1000010;//表示最小花费
for(int i=1;i<=9;i++){
scanf("%d",&a[i]);
minn=min(minn,a[i]);
}
int t=n/minn;//要保证最多的位数不变
if(t==0) printf("-1\n");
else{
while(t--){
for(int i=9;i>=1;i--){
if(n-a[i]>=minn*t){
cout<<i;
n=n-a[i];
break;
}
}
}
cout<<endl;
}
}
return 0;
}