Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int tab[201];
- int N,D,M;
- long long dp[201][201][21];
- long long DGS(int indice,int value, int set_sz)
- {
- if(value==0 && set_sz==M)
- return 1;
- if(indice>=N || (set_sz==M && value!=0))
- return 0 ;
- if(dp[indice][value][set_sz]!=-1)
- return dp[indice][value][set_sz];
- return dp[indice][value][set_sz]=DGS(indice+1,(value%D+tab[indice]%D)%D,set_sz+1)+ DGS(indice+1,value%D,set_sz) ;
- }
- int main()
- {
- // freopen("input.txt","r",stdin);
- // freopen("output.txt","w",stdout);
- int Q;
- for(int j=1;;j++)
- {
- cin>>N>>Q;
- if(N==0 && Q==0)
- return 0;
- for(int i=0;i<N;i++)
- cin>>tab[i];
- cout<<"SET "<<j<<":"<<endl;
- for(int i=1;i<=Q;i++)
- {
- memset(dp,-1,sizeof dp);
- cin>>D>>M;
- cout<<"QUERY "<<i<<": "<<DGS(0,0,0)<<endl;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement