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 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
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值