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. (1X,Y1091≤X,Y≤109)

Output

The minimum numbers of coins should be picked.

Sample input and output

Sample InputSample 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;
}

 

posted @ 2017-03-28 09:56  weeping  阅读(438)  评论(0编辑  收藏  举报