C++プログラミングボーナス:出納員が最小限の紙幣で十分なボーナスを支給するのを助けるプログラムを作成してください.

10793 ワード

ある企業は年末に従業員の業績によってボーナスを支給し、既知の資金金額は数百元しかない.出納員が最小限の紙幣で十分なボーナスを支給するのを助けるプログラムを書いてください.紙幣の額面は100元、50元、20元、10元、5元、2元、1元であることが知られている.
フォーマット金額の入力(元単位の整数)
出力フォーマットは、紙幣の額面が大きい順に各種紙幣の枚数を出力する(出力サンプルを参照)
入力サンプル
582

出力サンプル
100 : 5 
 50 : 1  
 20 : 1 
 10 : 1 
  5 : 0 
  2 : 1 
  1 : 0 

方法1:
#include
using namespace std;
int main()
{
    int m,m100,m50,m20,m10,m5,m2,m1;
    cin>>m;
    m100 = m/100;  
    m    = m%100;
    m50  = m/50;   
    m    = m%50;
    m20  = m/20;   
    m    = m%20;
    m10  = m/10;   
    m    = m%10;
    m5   = m/5;    
    m    = m%5;
    m2   = m/2;    
    m1   = m%2;    
    cout << "100 : " << m100 << " " << endl;
    cout << " 50 : " <<m50   << " " << endl;
    cout << " 20 : " <<m20   << " " << endl;
    cout << " 10 : " <<m10   << " " << endl;
    cout << "  5 : " <<m5    << " " << endl;
    cout << "  2 : " <<m2    << " " << endl;
    cout << "  1 : " <<m1    << " " << endl;
    return 0;
}

方法を書いた後、ループで解決すれば、コードがもっと簡単になることに気づきました.
方法2
#include
#include
using namespace std;
int main()
{
   int a[7] = {100,50,20,10,5,2,1},m,i,x,n;
   cin>>m;
	for (i=0 ; i<7 ; i++)
	{
		x = m / a[i] ;
		m = m % a[i] ;
		n = log10(a[i]*10);// a[i]   
		for (; n < 3 ; n++)//          
		 cout << " "; 
		cout << a[i] << " : " << x << " " << endl; 
	}
    return 0;
}