Igor has fallen in love with Tanya. Now Igor wants to show his feelings and write a number on the fence opposite to Tanya's house. Igor thinks that the larger the number is, the more chance to win Tanya's heart he has.
Unfortunately, Igor could only get v liters of paint. He did the math and concluded that digit d requires ad liters of paint. Besides, Igor heard that Tanya doesn't like zeroes. That's why Igor won't use them in his number.
Help Igor find the maximum number he can write on the fence.
The first line contains a positive integer v (0 ≤ v ≤ 106). The second line contains nine positive integersa1, a2, ..., a9 (1 ≤ ai ≤ 105).
Print the maximum number Igor can write on the fence. If he has too little paint for any digit (so, he cannot write anything), print -1.
5 5 4 3 2 1 2 3 4 5
55555
2 9 11 1 12 5 8 9 10 6
33
0 1 1 1 1 1 1 1 1 1
-1
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 1000005
#define LL long long
#define inf 9999999
int a[15];
int main()
{
int v,i,j;
while(scanf("%d",&v)!=EOF)
{
int x;
int mi=inf;
for(i=1;i<=9;i++)
{
scanf("%d",&a[i]);
if(a[i]<=mi)
{
mi=a[i];
x=i;
}
}
int xx=v/mi;
int fg=v%mi;
if(mi>v)
{
printf("-1\n");
continue;
}
if(fg==0)
{
for(i=1;i<=xx;i++)
{
printf("%d",x);
}
printf("\n");
continue;
}
while(v>0&&xx>0)
{
int k=0;
for(i=x;i<=9;i++)
{
int d=v-a[i];
if(d>=0&&k<i&&d/mi==xx-1)//找到满足长度为xx,但前几位数大于x的数
k=i;
}
if(k)
{
v-=a[k];
xx--;
printf("%d",k);
}
}
printf("\n");
}
return 0;
}
本文介绍了一道编程题目,主人公使用有限的油漆在栅栏上书写数字来表达爱意。文章提供了完整的代码实现,采用贪心算法找到可用油漆书写的最大合法数字。
1335

被折叠的 条评论
为什么被折叠?



