QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#765836 | #9254. Random Variables | piggy123 | WA | 3ms | 12404kb | C++17 | 3.9kb | 2024-11-20 15:23:05 | 2024-11-20 15:23:05 |
Judging History
answer
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll C[1005][1005],C2[1005],inv[1005],pw[1005],dp[1005][1005],MM;
const ll N=1000;
struct Mod
{
ll m, p;
void init(int pp) { m = ((__int128)1 << 64) / pp; p = pp; }
ll operator ()(ll x)
{
return x - ((__int128(x) * m) >> 64) * p;
}
} mod;
int main() {
cin.tie(0);cout.tie(0);
ios::sync_with_stdio(false);
ll T;
cin >> T >> MM;
mod.init(MM);
C[0][0]=1;
for (ll i=1; i<=N; i++) {
C[i][0]=1;
for (ll j=1; j<=N; j++) {
C[i][j]=mod(C[i-1][j]+C[i-1][j-1]);
}
}
while (T--) {
ll n,m;
cin >> n >> m;
C2[0]=1;
vector<ll> vct;
for (ll i=1;i<=n;i++){
vct.push_back(m-i+1);
ll z=i;
for (ll &j:vct){
if (z==1)break;
ll g=__gcd(j,z);
j/=g,z/=g;
}
C2[i]=1;
for (ll j:vct)C2[i]*=j,C2[i]=mod(C2[i]);
}
ll ans=0;
for (ll i=1;i<=n;i++){
dp[0][0]=1;
for(ll j=0;j<=min(n/(i+1),m);j++){
for (ll k=1;k<=n;k++){
dp[j][k]=mod(mod(dp[j][k-1]*j)+mod(k>=i+1&&j?mod(dp[j-1][k-i-1]*C[k-1][i])*j:0));
}
ll sm=0;
pw[0]=1;
for (ll i=1;i<=n;i++)pw[i]=mod(pw[i-1]*(m-j));
for (ll k=0;k<=n;k++){
sm+=mod(mod(dp[j][k]*C[n][k])*pw[n-k]);
if (sm>=MM)sm-=MM;
}
if (j&1){
ans-=mod(sm*C2[j]);
}else{
ans+=mod(sm*C2[j]);
}
// cout<<"!"<<sm<< endl;
ans+=MM;
if(ans>=MM)ans-=MM;
if(ans>=MM)ans-=MM;
}
// cout<< ans<<"\n";
}
pw[0]=1;
for (ll i=1;i<=n;i++)pw[i]=mod(pw[i-1]*m);
cout<< mod(mod((n+1)*pw[n])-ans+MM)%MM<<"\n";
}
return 0;
}
/*
■■■■■ ■■ ■■■ ■■■ ■ ■ ■ ■■■■ ■■■■
■ ■■ ■■ ■ ■■ ■ ■■ ■ ■ ■■ ■ ■■ ■■ ■
■ ■ ■■ ■ ■ ■ ■ ■ ■ ■■■ ■■ ■■ ■ ■■
■ ■ ■■ ■ ■ ■ ■ ■ ■ ■■ ■ ■■ ■■
■ ■ ■■ ■ ■ ■■ ■■ ■■ ■
■ ■■ ■■ ■ ■■■ ■ ■■■ ■■ ■■ ■■ ■■■
■■■■■ ■■ ■ ■ ■ ■ ■■ ■■ ■■ ■■
■ ■■ ■ ■ ■ ■ ■■ ■■ ■■ ■
■ ■■ ■ ■ ■ ■ ■■ ■■ ■ ■ ■■
■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■ ■■ ■■
■ ■■ ■■■■ ■■■■ ■■ ■■ ■■■■■■ ■■■■
*/
詳細信息
Test #1:
score: 100
Accepted
time: 2ms
memory: 12080kb
input:
3 123456789 3 2 5 5 7 7
output:
18 7145 2066323
result:
ok 3 lines
Test #2:
score: -100
Wrong Answer
time: 3ms
memory: 12404kb
input:
100 2 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2 10 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 3 10 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 4 10 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 6 10 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 7 10 8 1 8 2...
output:
-1 0 -1 0 -1 0 -1 0 -1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 -1 0 -1 0 -1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 -1 0 -1 0 -1 0 0 0 0 0 0 0 0 0 0 0
result:
wrong answer 1st lines differ - expected: '1', found: '-1'