描述
Farmer Han 开始玩飞盘之后,YDS也打算让奶牛们享受飞盘的乐趣.他要组建一只奶牛飞盘队.他的 N ( 1 ≤N≤ 2000 )只奶牛,每只奶牛有一个飞盘水准指数 Ri ( 1 ≤Ri≤ 100000 ).YDS要选出1只或多于1只奶牛来参加他的飞盘队.由于YDS的幸运数字是 F ( 1 ≤F≤ 1000 ),他希望所有奶牛的飞盘水准指数之和是幸运数字的倍数.
帮 YD S算算一共有多少种组队方式.组队方式数模10^8 ^取余的结果.
输入描述
第1行输入N和F,之后N行输入Ri
输出描述
组队方式数模108 取余的结果
用例输入 1
4 5 1 2 8 2
用例输出 1
3
来源
动态规划
代码
#include <stdio.h>
#define mod 100000000
int f[2001][1001];
int n,m;
inline int read()
{
int x=0;char ch=getchar();
while(ch<'0'||ch>'9')ch=getchar();
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x;
}
int main()
{
n=read();
m=read();
for(int i=1;i<=n;i++)
{
int p=read();
f[i][p%m]=1;
for(int j=0;j<m;j++)
{
f[i][j] =(f[i][j]+f[i-1][j])%mod;
f[i][(j+p)%m]=(f[i][(j+p)%m]+f[i-1][j])%mod;
}
}
printf("%d\n", f[n][0]);
return 0;
}
562

被折叠的 条评论
为什么被折叠?



