3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队

3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队

Time Limit: 3 Sec  Memory Limit: 128 MB
Submit: 286  Solved: 192

Description

    农夫顿因开始玩飞盘之后,约翰也打算让奶牛们享受飞盘的乐趣.他要组建一只奶牛飞盘
队.他的N(1≤N≤2000)只奶牛,每只部有一个飞盘水准指数Ri(1≤Ri≤100000).约翰要选出1只或多于1只奶牛来参加他的飞盘队.由于约翰的幸运数字是F(1≤F≤1000),他希望所有奶牛的飞盘水准指数之和是幸运数字的倍数.
    帮约翰算算一共有多少种组队方式.

Input

    第1行输入N和F,之后N行输入Ri.

Output

 
    组队方式数模10^8取余的结果.

Sample Input

4 5
1
2
8
2

Sample Output

3

HINT

    组队方式有(2,3),(3,4),(1,2,4)共三种


code

背包问题,加了一个取模。

 1 #include<cstdio>
 2 #include<algorithm>
 3 
 4 using namespace std;
 5 
 6 const int mod = 1e8;
 7 int f[2010][1010];
 8 
 9 int main()
10 {
11     int n,m;
12     scanf("%d%d",&n,&m);
13     for (int x,i=1; i<=n; ++i)
14     {
15         scanf("%d",&x);
16         f[i][x%m] = 1;
17         for (int j=0; j<m; ++j)
18         {
19             f[i][j] = (f[i][j]+f[i-1][j])%mod;
20             f[i][(j+x)%m] = (f[i][(j+x)%m]+f[i-1][j])%mod;
21         }
22     }
23     printf("%d",f[n][0]);
24     return 0;
25 }
原文地址:https://www.cnblogs.com/mjtcn/p/7367763.html