#include <iostream>
#include <iomanip>
#include <vector>
#include <cmath>
using namespace std;
vector<int> coin={5,10,20,50,100,200,500,1000,2000,5000,10000};
vector<vector<long long int> > dp(11,vector<long long int>(30001,-1));
long long int cc(int i,int sum){
if(sum==0)return 1;
if(i==coin.size())return 0;
if(coin[i]>sum)return dp[i][sum]=0;
if(dp[i][sum]!=-1)return dp[i][sum];
return dp[i][sum]=cc(i+1,sum)+cc(i,sum-coin[i]);
}
int main(){
double n;
while(cin>>n){
n*=100;
int m=round(n);
n/=100;
if(m==0)return 0;
// for(auto &i:dp)
// fill(i.begin(),i.end(),-1);
cout<<setprecision(2)<<setw(6)<<fixed<<n<<setw(17)<<fixed<<cc(0,m)<<endl;
}
return 0;
}
#include <iomanip>
#include <vector>
#include <cmath>
using namespace std;
vector<int> coin={5,10,20,50,100,200,500,1000,2000,5000,10000};
vector<vector<long long int> > dp(11,vector<long long int>(30001,-1));
long long int cc(int i,int sum){
if(sum==0)return 1;
if(i==coin.size())return 0;
if(coin[i]>sum)return dp[i][sum]=0;
if(dp[i][sum]!=-1)return dp[i][sum];
return dp[i][sum]=cc(i+1,sum)+cc(i,sum-coin[i]);
}
int main(){
double n;
while(cin>>n){
n*=100;
int m=round(n);
n/=100;
if(m==0)return 0;
// for(auto &i:dp)
// fill(i.begin(),i.end(),-1);
cout<<setprecision(2)<<setw(6)<<fixed<<n<<setw(17)<<fixed<<cc(0,m)<<endl;
}
return 0;
}
Comments
Post a Comment