Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #include<cstdio>
- using namespace std;
- int n,i,d,m;
- int a[205],dp[205][25][15];
- int solve(int i,int cnt,int sum)
- {
- //cout<<i<< " "<<cnt<<" "<<sum<<" "<<dp[i][cnt][sum]<<endl;
- if(i==n) return 0;
- if(dp[i][cnt][sum]!=-1) return dp[i][cnt][sum];
- if(cnt==m ){
- if(sum==0) return 1;
- else return 0;
- }
- int ret1=0,ret2=0;
- ret1=solve(i+1,cnt+1,(sum+a[i])%d);
- ret2=solve(i+1,cnt,sum);
- return dp[i][cnt][sum]=(ret1+ret2);
- }
- int main()
- {
- int t,q,kase=0;
- scanf("%d",&t);
- while(t--)
- {
- scanf("%d%d",&n,&q);
- for(int i=0;i<n;i++)
- {
- scanf("%d",&a[i]);
- }
- printf("Case %d:\n",++kase);
- for(int i=0;i<q;i++)
- {
- scanf("%d%d",&d,&m);
- memset(dp,-1,sizeof dp);
- int ans=solve(0,0,0);
- printf("--%d\n",ans);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement