The 15th UESTC Programming Contest Preliminary C - C0ins cdoj1554
地址:http://acm.uestc.edu.cn/#/problem/show/1554
题目:
C0ins
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
There are infinite coins with values 1,2,5,101,2,5,10.
What's the minimum numbers of coins should be picked that XX and YY can be made change for?
Input
Two integers XX and YY. (1≤X,Y≤1091≤X,Y≤109)
Output
The minimum numbers of coins should be picked.
Sample input and output
Sample Input | Sample Output |
---|---|
8 9
|
4
|
Hint
In sample, four coins 1,2,2,51,2,2,5 and 1,1,2,51,1,2,5 both can make change for 88 and 99.
Source
The 15th UESTC Programming Contest Preliminary
#include<iostream>
#include<algorithm>
using namespace std;
long long a,b,aa,bb,ans1,ans2,ans110,ans15,ans12,ans11,ans210,ans25,ans22,ans21;
int check(int a,int b)
{
long long aa,bb,ans1,ans2,ans110,ans15,ans12,ans11,ans210,ans25,ans22,ans21;
aa=bb=ans1=ans2=ans110=ans15=ans12=ans11=ans210=ans25=ans22=ans21=0;
aa=a,bb=b;
if(a<0||b<0)
return 10000;
ans110+=a/10;
a%=10;
ans15+=a/5;
a%=5;
ans12+=a/2;
a%=2;
ans11+=a;
ans210+=b/10;
b%=10;
ans25+=b/5;
b%=5;
ans22+=b/2;
b%=2;
ans21+=b;
ans1=max(ans110,ans210)+max(ans15,ans25)+max(ans12,ans22)+max(ans11,ans21);
ans2=ans110+ans15+ans11+ans12;
bb-=aa;
ans2+=bb/10;
bb%=10;
ans2+=bb/5;
bb%=5;
ans2+=bb/2;
bb%=2;
ans2+=bb;
return min(ans2,ans1);
}
int main()
{
cin>>a>>b;
if(a>b)
swap(a,b);
cout<<min(check(a,b),check(a-6,b-14)+4);
return 0;
}
作者:weeping
出处:www.cnblogs.com/weeping/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。