Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define _ ios_base::sync_with_stdio(0);cin.tie(0);
- int n2, n5, n10, n20, n50, n100;
- int v[6];
- int pd[5005][7][505];
- int resp(int n, int mini, int usei){
- if(pd[n][mini][usei]!=-1) return pd[n][mini][usei];
- if(n==0){
- return pd[n][mini][usei]=1;
- }
- int tot = 0;
- if(n-100>=0 and mini>5 and v[5]!=0) tot+= resp(n-100, 5, 1);
- else if(n-100>=0 and mini==5 and usei<v[5]) tot+= resp(n-100, 5, usei+1);
- if(n-50>=0 and mini>4 and v[4]!=0) tot+= resp(n-50, 4, 1);
- else if(n-50>=0 and mini==4 and usei<v[4]) tot+= resp(n-50, 4, usei+1);
- if(n-20>=0 and mini>3 and v[3]!=0) tot+= resp(n-20, 3, 1);
- else if(n-20>=0 and mini==3 and usei<v[3]) tot+= resp(n-20, 3, usei+1);
- if(n-10>=0 and mini>2 and v[2]!=0) tot+= resp(n-10, 2, 1);
- else if(n-10>=0 and mini==2 and usei<v[2]) tot+= resp(n-10, 2, usei+1);
- if(n-5>=0 and mini>1 and v[1]!=0) tot+= resp(n-5, 1, 1);
- else if(n-5>=0 and mini==1 and usei<v[1]) tot+= resp(n-5, 1, usei+1);
- if(n-2>=0 and mini>0 and v[0]!=0) tot+= resp(n-2, 0, 1);
- else if(n-2>=0 and mini==0 and usei<v[0]) tot+= resp(n-2, 0, usei+1);
- return pd[n][mini][usei] = tot;
- }
- int main(){ _
- memset(pd, -1, sizeof(pd));
- int n;
- cin >> n;
- cin >> v[0] >> v[1] >> v[2] >> v[3] >> v[4] >> v[5];
- int tot = 0;
- if(n>=100 and v[5]!=0) tot+= resp(n-100, 5, 1);
- if(n>=50 and v[4]!=0) tot+= resp(n-50, 4, 1);
- if(n>=20 and v[3]!=0) tot+= resp(n-20, 3, 1);
- if(n>=10 and v[2]!=0) tot+= resp(n-10, 2, 1);
- if(n>=5 and v[1]!=0) tot+= resp(n-5, 1, 1);
- if(n>=2 and v[0]!=0) tot+= resp(n-2, 0, 1);
- cout << tot << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement