斗地主(牛客)



很明显的一个dp
dp[i][j]表示打了前i张牌模数为j的方案数
转移方程:
dp[i][(j+a[x])%k]=dp[i][(j+a[x])%k]+dp[i-1][j];
初始状态dp[0][0]=1;

#include
using namespace std;
#define lowbit(x) x&(-x)
#define ll long long
const int mod=1e9+7;
int a[55];
ll dp[105][55];
int main(){
	int n,m,k;
	cin>>n>>m>>k;
	for(int i=1;i<=m;i++)cin>>a[i];
	dp[0][0]=1;
	for(int i=1;i<=n;i++)
	   for(int j=1;j<=m;j++)
		  for(int z=0;z