杭电ACM 2021

#include <iostream>


using namespace std;


int Count(int a[], int num)
{
    int r100, r50, r10, r5, r2, r1;
    int j, sum = 0;


    for(j = 0; j < num; ++j)
    {
        if(a[j]/100)
        {
            r100 = a[j] / 100;
            r50 = (a[j] - r100*100) / 50;
            r10 = (a[j] - r100*100 - r50*50) / 10;
            r5 = (a[j] - r100*100 - r50*50- r10*10) / 5;
            r2 = (a[j] - r100*100 - r50*50- r10*10 - r5*5) / 2;
            r1 = a[j] - r100*100 - r50*50- r10*10 - r5*5 - r2*2;
        }
        else
            if(a[j]/50)
            {
                r100 = 0;
                r50 = (a[j] - r100*100) / 50;
                r10 = (a[j] - r100*100 - r50*50) / 10;
                r5 = (a[j] - r100*100 - r50*50- r10*10) / 5;
                r2 = (a[j] - r100*100 - r50*50- r10*10 - r5*5) / 2;
                r1 = a[j] - r100*100 - r50*50- r10*10 - r5*5 - r2*2;
            }
            else
                if(a[j]/10)
                {
                    r100 = 0;
                    r50 = 0;
                    r10 = (a[j] - r100*100 - r50*50) / 10;
                    r5 = (a[j] - r100*100 - r50*50- r10*10) / 5;
                    r2 = (a[j] - r100*100 - r50*50- r10*10 - r5*5) / 2;
                    r1 = a[j] - r100*100 - r50*50- r10*10 - r5*5 - r2*2;
                }
                else
                    if(a[j]/5)
                    {
                        r100 = 0;
                        r50 = 0;
                        r10 = 0;
                        r5 = (a[j] - r100*100 - r50*50- r10*10) / 5;
                        r2 = (a[j] - r100*100 - r50*50- r10*10 - r5*5) / 2;
                        r1 = a[j] - r100*100 - r50*50- r10*10 - r5*5 - r2*2;
                    }
                    else
                        if(a[j]/2)
                        {
                            r100 = 0;
                            r50 = 0;
                            r10 = 0;
                            r5 = 0;
                            r2 = (a[j] - r100*100 - r50*50- r10*10 - r5*5) / 2;
                            r1 = a[j] - r100*100 - r50*50- r10*10 - r5*5 - r2*2;
                        }
                        else
                            if(a[j]/1)
                            {
                                r100 = 0;
                                r50 = 0;
                                r10 = 0;
                                r5 = 0;
                                r2 = 0;
                                r1 = a[j];
                            }
    sum += r100 + r50 + r10 + r5 + r2 + r1;
    }
    return sum;

}

-----------------------最开始暴力破解-----------------------------------------------------

#include <iostream>


using namespace std;


int main()
{
    int n;


    while(cin >> n && n)
    {
        int sum = 0;


        while(n--)
        {
            int m, num, i;
            int b[6] ={100, 50, 10, 5, 2, 1};


            cin >> m;
            for(i = 0; i < 6; ++i)
            {
                num = m/b[i];
                sum += num;
                m = m%b[i];
            }
        }
        cout << sum << endl;
    }

}

这里用逆向思维进行解题,效果很好!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值