1. 程式人生 > >【杭電oj2021】發工資咯:)

【杭電oj2021】發工資咯:)

發工資咯:)

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


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
Source
Recommend lcy   |   We have carefully selected several similar problems for you:  
1000
 2046 1004 1001 2072  基礎貪心題,算是吧,哈哈。
#include<stdio.h>
int sum(int i);
int main() {
    int i,j,n;
    int a[120];
    while(scanf("%d",&n)&&n!=0) {
        int k=0;
        for(i=0; i<n; i++)
            scanf("%d",&a[i]);
        for(j=0; j<n; j++)
            k+=sum(a[j]);
        printf("%d\n",k);
    }
    return 0;
}
int sum(int i) {
    int a[6]= {100,50,10,5,2,1},m=0;
    for(int l=0; l<6; l++) {
        m+=i/a[l];
        i=i%a[l];
    }
    return m;
}
題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=2021