1782: 火柴字
时间限制: 1 Sec 内存限制: 128 MB提交: 62 解决: 21
您该题的状态:已完成
[提交][状态][讨论版]
题目描述
小明得到了一盒火柴,他可以用这些火柴拼成各种数字。假设现有V根火柴,根据拼法的不同,拼成数字i 需要ai根火柴。
请你帮助他拼成最大的数字。
输入
每一种情况下,第一行都包含一个非负整数V(0 ≤V ≤106)。
第二行包含九个正整数a1,a2,……,a9(1≤ai≤105)。
输出
样例输入
5
5 4 3 2 1 2 3 4 5
2
9 11 1 12 5 8 9 10 6
样例输出
55555
33
提示
来源
题目智能推荐 1584 1313 1570 1650 1882 2094 |
#include<stdio.h>
#include<string.h>
int main()
{
int v,a[9],min;
while(~scanf("%d",&v))
{
min=106;
for(int i=0;i<9;i++)
{
scanf("%d",&a[i]);
if(min>a[i])
min=a[i];
}
if(min>v){
printf("-1\n");
continue;
}
int bit=v/min;//最多位数
while(bit--){
//位数先减 1
for(int i=8;i>=0;i--){
//保证位数不变的最大数
if(a[i]<=v&&(v-a[i])/min>=bit){
v-=a[i];
printf("%d",i+1);
break;
}
}
}
printf("\n");
}
}
2080: Color the fence
时间限制: 1 Sec 内存限制: 64 MB提交: 10 解决: 4
您该题的状态:未开始
[提交][状态][讨论版]
题目描述
Tom has fallen in love with Mary. Now Tom wants to show his love and write a number on the fence opposite to
Mary’s house. Tom thinks that the larger the numbers is, the more chance to win Mary’s heart he has.
Unfortunately, Tom could only get V liters paint. He did the math and concluded that digit i requires ai liters paint.
Besides,Tom heard that Mary doesn’t like zero.That’s why Tom won’t use them in his number.
Help Tom find the maximum number he can write on the fence.
输入
输出
样例输入
5
5 4 3 2 1 2 3 4 5
2
9 11 1 12 5 8 9 10 6
样例输出
55555
33
提示
来源
这道题与上面那道原理一样
/*
思路:贪心思想,我们要让能得到数尽量大,那么就要保证让位数尽量长,在位数
尽量长的基础上,让高位数尽量大。除以最小的数,可以
让位数最长,然而最长可以不仅仅是由最小的数得到。如:V=5,array={2,3,24,32,31,14,15,7,9},
虽然可以得到最长长度是2,且由除以2可得到结果11,但是最优的结果却是21。所以只要我们能
保证我们得到的高位数字比选择最小的数所得高位数字大并且位数相等即可。
*/
#include <stdio.h>
int main(void)
{
int V;
while (~scanf("%d", &V))
{
int array[10],i;
int min = 10001;
for (i = 1; i <= 9; i++)
{
scanf("%d", &array[i]);
if (array[i] <= min)
{
min = array[i];
}
}
if (min > V)
{
printf("-1\n");
continue;
}
int bit = V / min;
while(bit--)
{
for (int j = 9; j >= 1; j--)
{
if (V >= array[j] && (V - array[j] )/ min == bit)
{
printf("%d", j);
V -= array[j];
break;
}
}
}
putchar('\n');
}
return 0;
}