QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#765862#9254. Random Variablespiggy123WA 0ms12964kbC++173.9kb2024-11-20 15:27:232024-11-20 15:27:25

Judging History

This is the latest submission verdict.

  • [2024-11-20 15:27:25]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 12964kb
  • [2024-11-20 15:27:23]
  • Submitted

answer

#include <bits/stdc++.h>
#define ll long long
#pragma GCC optimize(2,3,"Ofast","unroll-loops")
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++) {
				pw[0]=1;
				for (ll k=1; k<=n; k++) {
					pw[k]=mod(pw[k-1]*(m-j));
					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;
				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]);
					if (ans<0)ans+=MM;
				} else {
					ans+=mod(sm*C2[j]);
					if (ans>=MM)ans-=MM;
				}
//				cout<<"!"<<sm<< endl;
			}
//			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;
}

/*
                                                                
 ■■■■■     ■■      ■■■     ■■■   ■    ■     ■     ■■■■    ■■■■  
 ■   ■■    ■■     ■  ■■   ■  ■■  ■    ■    ■■     ■  ■■  ■■  ■  
 ■    ■    ■■    ■    ■  ■    ■   ■  ■    ■■■    ■■  ■■  ■   ■■ 
 ■    ■    ■■    ■    ■  ■    ■   ■  ■     ■■    ■   ■■      ■■ 
 ■    ■    ■■    ■       ■         ■■      ■■        ■■      ■  
 ■   ■■    ■■    ■  ■■■  ■  ■■■    ■■      ■■       ■■     ■■■  
 ■■■■■     ■■    ■    ■  ■    ■    ■■      ■■      ■■        ■■ 
 ■         ■■    ■    ■  ■    ■    ■■      ■■     ■■          ■ 
 ■         ■■    ■    ■  ■    ■    ■■      ■■     ■      ■   ■■ 
 ■         ■■    ■■  ■■  ■■  ■■    ■■      ■■    ■       ■■  ■■ 
 ■         ■■      ■■■■    ■■■■    ■■      ■■    ■■■■■■   ■■■■  
*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 12488kb

input:

3 123456789
3 2
5 5
7 7

output:

18
7145
2066323

result:

ok 3 lines

Test #2:

score: -100
Wrong Answer
time: 0ms
memory: 12964kb

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'