题目链接 http://codeforces.com/problemset/problem/996/A
题意: 问由100,20,10,5,1组成的最少钱的张数应该是多少。
思路:
用贪心思想,能用钱多的就不用钱少的。代码如下。
#include <set>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <functional>
using namespace std;
typedef long long LL;
typedef long long ll;
const int maxn = 1e6+6;
const int modn = 1e9+7;
const int INF = 0x3f3f3f3f;
char str[maxn];
int a[maxn];
void show(int a[],int n){
for(int i=0;i<n;i++){
printf("%d ",a[i]);
}printf("\n");
}
int main(){
// freopen("C:\\Users\\lenovo\\Desktop\\data.in","r",stdin);
int n;
int a[5]={
100,20,10,5,1
};
while(scanf("%d",&n)!=EOF){
int sum=0;
for(int i=0;i<5;i++){
int c = n/a[i];
sum+=c;
n-=c*a[i];
}
printf("%d\n",sum);
}
}