#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
int num[6],sum[6];
int mi(int num[],int a[],int count1)
{
int sum=0;
for(int i=5;i>1;i--)
{
if(count1>a[i]*num[i])
{
sum=sum+num[i];
count1=count1-a[i]*num[i];
}
else
{
int temp=count1/a[i];
sum=sum+temp;
count1=count1-temp*a[i];
}
}
if(count1>num[1])
return -1;
else
return sum+count1;
}
int ma(int sum[],int num[],int a[],int count1)
{
int sum1=0;
for(int i=5;i>1;i--)
{
if(count1>sum[i-1])
{
int t=(count1-sum[i-1])/a[i];
if((count1-sum[i-1])%a[i]>0)
t++;
sum1=sum1+t;
count1=count1-t*a[i];
}
}
if(count1>num[1])
return -1;
else
return sum1+count1;
}
void pd(int sum[],int num[],int a[],int count1)
{
int tmin=mi(num,a,count1);
if(tmin==-1)
printf("-1 -1\n");
else
{
int tmax=ma(sum,num,a,count1);
if(tmax==-1)
printf("-1 -1\n");
else
printf("%d %d\n",tmin,tmax);
}
}
int main()
{
int t;
int a[6]={0,1,5,10,50,100};
scanf("%d",&t);
while(t--)
{
int count1;
scanf("%d",&count1);
for(int i=1;i<=5;i++)
{
scanf("%d",&num[i]);
}
for(int i=1;i<=5;i++)
sum[i]=sum[i-1]+a[i]*num[i];
if(sum[5]<count1)
printf("-1 -1\n");
else
pd(sum,num,a,count1);
}
return 0;
}
coins
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1100 Accepted Submission(s): 316
"Thanks to the best age, I can buy many things!" Now Dong MW has a book to buy, it costs P Jiao. He wonders how many banknotes at least,and how many banknotes at most he can use to buy this nice book. Dong MW is a bit strange, he doesn't like to get the change, that is, he will give the bookseller exactly P Jiao.
T lines with 6 integers each:
P a1 a5 a10 a50 a100
ai means number of i-Jiao banknotes.
All integers are smaller than 1000000.