久違的TIOJ
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #include<vector> #define ULLI unsigned long long int using namespace std; vector<int> stock; ULLI dp[10001][100]; ULLI getdp(int a,int b) { if((a<0)||(b<0)) return 0; if(a==0) return 1; if(b==0) return (a%stock[0]==0); return dp[a][b]; } int main() { int n,p; while(scanf("%d %d",&n,&p)!=EOF) { stock.clear(); memset(dp,0,sizeof(dp)); if(!n&&!p) break; int inp; for(int lx=1;lx<=n;lx++) { scanf("%d",&inp); if(inp<=p) stock.push_back(inp); } for(int lx=0;lx<stock.size();lx++) for(int lp=0;lp<=p;lp++) dp[lp][lx]=getdp(lp,lx-1)+getdp(lp-stock[lx],lx); printf("%I64u\n",dp[p][stock.size()-1]); } return 0; }
沒有留言:
張貼留言