70求助
查看原帖
70求助
1359141
mo_mo_yu0_0楼主2024/9/28 23:24

rt

#include<bits/stdc++.h>
using namespace std;
#define int unsigned long long
int n,m,k,ans=1,num,d[100010],a,b,len;
const int mod=1000000007;
map<pair<int,int>,bool>mp;
map<int,int>p;
int fast_pow(int x,int y){
	if(y==0)return 1;
	if(y==1)return x%mod;
	int u=fast_pow(x,y/2);
	if(y&1)return u%mod*u%mod*x%mod;
	else return u%mod*u%mod;
}
signed main(){
	cin>>n>>m>>k;
	len=m;
	for(int i=1;i<=k+2;i++){
		if(n&1)d[i]=(n+1)/2*n;
		else d[i]=n*(n+1)/2;
	}
	for(int i=1;i<=k;i++){
		cin>>a>>b;
		if(!p.count(a)){
			len--;
			num++;
			p[a]=num;
		}
		if(!mp.count(make_pair(a,b))){
			mp[make_pair(a,b)]=true;
			d[p[a]]-=b;
		}
	}
	for(int i=1;i<=num;i++){
		ans*=d[i];
		ans%=mod;
	}
	int g;
	if(n&1)g=(n+1)/2%mod*n%mod;
	else g=n/2%mod*(n+1)%mod;
	ans*=fast_pow(g,len);
	cout<<(ans+mod)%mod;
}
2024/9/28 23:24
加载中...