70分求助
查看原帖
70分求助
378195
icaijy楼主2024/11/13 19:16
#include <bits/stdc++.h>
#define MOD 1000000007
#define int long long
using namespace std;

int t, n, p, x, y;
int dp[2][10005];

signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> t;
    dp[0][0] = 1;
    while (t--)
    {
        int ans = 0;
        cin >> n >> p >> x >> y;
        if (x==y){
            int now=0;
            for (int i=1;i<=n;i++) {
                now+=x;
                if (now%p==0) {
                    now=-1;
                    break;
                }
            }
            cout<<(now==-1?0:1)<<endl;
            continue;
        }
        for (int i = 0; i <= n; i++)
        {
            for (int j = 0; i + j <= n; j++)
            {
                if (i==0&&i==j) continue;
                dp[i&1][j]=0;
                if ((i*x+j*y)%p==0) continue;
                if (i>0) dp[i&1][j]+=dp[(i&1)^1][j];
                if (j>0) dp[i&1][j]+=dp[i&1][j-1];
                dp[i&1][j]%=MOD;
                if (i+j==n) ans=(ans+dp[i&1][j])%MOD;
            }
        }
        cout << ans << endl;
    }
}

第二个子任务寄了

2024/11/13 19:16
加载中...