HDOJ 2021 发工资咯:)解题报告

这两天有点不在状态,

不知道搞什么,今天max sum WA 了无数次,,,就是找不到哪里出问题了。。郁闷。

索性去后面拿一道简单的题目来做,就选了这一题,。。。

 

一遍就AC了,

就是顺着题目的意思来写,

写代码的时候有些地方没考虑清楚,耗了一点时间,

不过写完之后还是一遍AC了,,

发工资咯:)

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 22007    Accepted Submission(s): 12473


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
 

 

Author
lcy
 

 

 

 

代码如下:

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int n,i,t,temp,sum;
 5     long a[100]={0};
 6     while(scanf("%d", &n)!=EOF && n!=0)
 7     {        
 8         for(i=0;i<n;i++)
 9             scanf("%d",&a[i]);
10         for(i=0,sum=0;i<n;i++)
11         {
12             temp=0;
13             t=a[i]/100;
14             a[i]-=100*t;
15             temp+=t;
16             t=a[i]/50;
17             temp+=t;
18             a[i]-=50*t;
19             t=a[i]/10;
20             temp+=t;
21             a[i]-=10*t;
22             t=a[i]/5;
23             temp+=t;
24             a[i]-=5*t;
25             t=a[i]/2;
26             temp+=t;
27             a[i]-=2*t;        
28             t=a[i]/1;
29             temp+=t;
30             sum+=temp;
31         }
32         printf("%d\n",sum);
33     }
34     return 0;
35 }

其实思路都是一样的,找出每一个老师对应的工资的最少张数,然后加起来就是了。。

这个代码绝对不是好的代码。。。

优化之后的代码,应该还差不多吧。。。。。。。

 1 #include<stdio.h>
 2 int main()
 3 {    
 4     int s[100];
 5     int sum, i, j, temp, n;
 6     int m1, m2, m3, m4, m5, m6;
 7     while(scanf("%d", &n)!=EOF && n!=0)
 8     {
 9         for(i=0,sum=0;i<n;i++)
10         {
11             scanf("%d", &s[i]);
12             m1=s[i]/100;
13             m2=s[i]%100/50;
14             m3=s[i]%100%50/10;
15             m4=s[i]%100%50%10/5;
16             m5=s[i]%100%50%10%5/2;
17             m6=s[i]%100%50%10%5%2/1;
18             sum+=m1+m2+m3+m4+m5+m6;
19         }
20         printf("%d\n", sum);
21     }
22     return 0;
23 }

 

posted @ 2013-05-02 21:17  Geekers  阅读(334)  评论(0编辑  收藏  举报