HDU 2021 发工资咯:)

发工资咯:)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 61417 Accepted Submission(s): 33135

Problem Description

作为杭电的老师,最盼望的日子就是每月的8号了,因为这一天是发工资的日子,养家糊口就靠它了,呵呵
但是对于学校财务处的工作人员来说,这一天则是很忙碌的一天,财务处的小胡老师最近就在考虑一个问题:如果每个老师的工资额都知道,最少需要准备多少张人民币,才能在给每位老师发工资的时候都不用老师找零呢?
这里假设老师的工资都是正整数,单位元,人民币一共有100元、50元、10元、5元、2元和1元六种。

Input

输入数据包含多个测试实例,每个测试实例的第一行是一个整数n(n<100),表示老师的人数,然后是n个老师的工资。
n=0表示输入的结束,不做处理。

Output

对于每个测试实例输出一个整数x,表示至少需要准备的人民币张数。每个输出占一行。

Sample Input

3
1 2 3
0

Sample Output

4

第一眼确实没思路,我有点慌。因为不知道怎么处理这种题,我记得蓝桥杯还是什么有一个包子的题,也是让凑包子的,我不会。我本以为这个也是那样,然后我仔细想了想,这个题是C语言程序设计练习(四) 题集里的,肯定不难,最后终于想出了这么一个办法。不断地去除100 50 10 5 2 1,这几个数字。最后加一起他们的余数。我放代码,我感觉自己说的有点乱,。我的代码一般比较清晰,虽然冗长。

#include"cstdio"
#include"cstring"
#include"cmath"
#include"algorithm"
using namespace std;  
bool cmp(int a,int b)
{
    return aint main ()
{
    int i, l, m, j, k, n, t;
    int a[105];
    while(1)
    {
        scanf("%d",&n);
        if(n==0)
        return 0;
        for(i=0;i"%d",&a[i]);
        }
        int sum=0;
        for(i=0;i100+a[i]%100/50+a[i]%100%50/10+a[i]%100%50%10/5+a[i]%100%50%10%5/2+a[i]%100%50%10%5%2/1;
        }
        printf("%d\n",sum);
    }
    return 0;
}

有一行比较长,网上有人可以写短点。但我还是喜欢长一点。思路看起来清晰。
我都是按顺序写刷网站上的题,本来想着,每天写三道,但是有时候题非常简单,我就自动认为不算数。新的计数方式是这样,每天每个网站上刷题,一直刷到我认为哪个题可以写成一篇博客了,就停下。
今晚上NYoj和HDU的任务都完成了,接下来看看51Nod的,希望能早点睡。

你可能感兴趣的:(杭电-PA)