发工资咯:)
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的,希望能早点睡。