#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <climits>
#include <set>
using namespace std;
#define maxn 100
int p[maxn], m[maxn], c1[maxn*maxn], c2[maxn*maxn];
int main()
{
// freopen("in.txt", "r", stdin);
int n;
while(cin >> n && n)
{
for(int i = 0; i < n; i++)
{
cin >> p[i] >> m[i];
}
memset(c1, 0, sizeof(c1));
memset(c2, 0, sizeof(c2));
int s = 0;
c1[0] = 1;
c2[0] = 1;
for(int i = 0; i < n; i++)
{
for(int j = 0; j <= s; j++)
for(int k = 1; k <= m[i]; k++)
{
int t = j + k * p[i];
c2[t] += c1[j];
c2[t] %= 10000;
}
s += p[i] * m[i];
for(int i = 0; i <= s; i++)
{
c1[i] = c2[i];
}
}
if(s % 3 == 0)
cout << c1[s/3] << endl;
else
cout << "sorry" << endl;
}
return 0;
}
HDOJ-2110 Crisis of HDU(母函数)
最新推荐文章于 2020-04-20 22:53:03 发布