HDU 2021 发工资咯:)

来源:互联网 发布:往string数组添加元素 编辑:程序博客网 时间:2024/04/30 11:54

发工资咯:)
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 a<b;}int 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<n;i++)        {            scanf("%d",&a[i]);        }        int sum=0;        for(i=0;i<n;i++)        {            sum=sum+a[i]/100+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的,希望能早点睡。

0 0
原创粉丝点击