hdu 2021 发工资咯:)(c语言)
hdu 2021 發工資咯:)
點擊做題網站鏈接
題目描述
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
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
問題解答一
這是最初的構想和邏輯,但明顯該代碼太低長,很多都是重復內容,寫起來不方便,太幼稚了
#include <stdio.h> #include <stdlib.h>int main() {int n,a[100];while( scanf("%d",&n)!=EOF && n!=0 ){for(int i=0;i<n;++i)//錄入工資scanf("%d",&a[i]);int sum=0;for(int i=0;i<n;++i)//遍歷每個老師的工資{if( a[i]>=100 ){sum+=a[i]/100;a[i]%=100;}if( a[i]>=50 ){sum+=1;a[i]-=50;}if( a[i]>=10 ){sum+=a[i]/10;a[i]%=10;}if( a[i]>=5 ){sum+=1;a[i]-=5;}if( a[i]>=2 ){sum+=a[i]/2;a[i]%=2;}if( a[i]!=0 ){sum+=a[i];}}printf("%d\n",sum);}return 0; }問題解答二
上面那種繁復的代碼運行成功后,這是簡化版的改版,邏輯算法是一樣的
#include <stdio.h> #include <stdlib.h>int main() {int n,salary,a[6]={100,50,10,5,2,1};while( scanf("%d",&n)!=EOF && n!=0 ){int sum=0;for(int j=0;j<n;++j){scanf("%d",&salary);for(int i=0;salary>0;++i)if( salary>=a[i] ){sum+=salary/a[i];salary%=a[i];}}printf("%d\n",sum);}return 0; }轉載于:https://www.cnblogs.com/yuzilan/p/10626164.html
總結
以上是生活随笔為你收集整理的hdu 2021 发工资咯:)(c语言)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JSP 调试
- 下一篇: mybatis无mapper.xml用法