QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#765727#9254. Random Variablespiggy123WA 13ms21016kbC++173.7kb2024-11-20 15:06:372024-11-20 15:06:38

Judging History

你现在查看的是最新测评结果

  • [2024-11-20 15:06:38]
  • 评测
  • 测评结果:WA
  • 用时:13ms
  • 内存:21016kb
  • [2024-11-20 15:06:37]
  • 提交

answer

#include <bits/stdc++.h>
#define ll long long
using namespace std;

ll C[1005][1005],C2[1005],inv[1005],pw[1005][1005],dp[1005][1005],mod;
const ll N=1000;

ll qkp(ll a,ll k){
	ll ans=1;
	while (k){
		if (k&1)ans*=a,ans%=mod;
		a*=a,a%=mod;
		k>>=1;
	}
	return ans;
}

int main() {
	ll T;
	cin >> T >> mod;
	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]=(C[i-1][j]+C[i-1][j-1])%mod;
		}
	}
	for (ll i=1;i<=N;i++)inv[i]=qkp(i,mod-2);
	for (ll i=1;i<=N;i++){
		pw[i][0]=1;
		for (ll j=1;j<=N;j++){
			pw[i][j]=pw[i][j-1]*i%mod;
		}
	}
	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;
		}
		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]=(dp[j][k-1]*j%mod+(k>=i+1&&j?dp[j-1][k-i-1]*C[k-1][i]%mod*j%mod:0))%mod;
				}
				ll sm=0;
				for (ll k=0;k<=n;k++){
					sm+=dp[j][k]*C[n][k]%mod*pw[m-j][n-k]%mod;
					sm%=mod;
				}
				if (j&1){
					ans-=sm*C2[j]%mod;
				}else{
					ans+=sm*C2[j]%mod;
				}
//				cout<<"!"<<sm<< endl;
				ans+=mod;
				ans%=mod;
			}
//			cout<< ans<<"\n";
		}
		cout<< ((n+1)*pw[m][n]%mod-ans+mod)%mod<<"\n";
	}
	return 0;
}

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

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 13ms
memory: 20592kb

input:

3 123456789
3 2
5 5
7 7

output:

18
7145
2066323

result:

ok 3 lines

Test #2:

score: -100
Wrong Answer
time: 4ms
memory: 21016kb

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
1
0
0
0
0
0
0
0
0
0
1
0
1
0
1
0
1
0
1
0
1
0
0
0
0
0
0
0
0
0
1
0
1
0
1
0
1
0
1
0
1
0
0
0
0
0
0
0
0
0
1
0
1
0
1
0
1
0
1
0
1
0
0
0
0
0
0
0
0
0
1
0
1
0
1
0
1
0
1
0
1
0
0
0
0
0
0
0
0
0

result:

wrong answer 11th lines differ - expected: '0', found: '1'