求救
  • 板块P5509 派遣
  • 楼主PurslaneM2GA
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/9/17 23:17
  • 上次更新2023/10/27 11:04:34
查看原帖
求救
120947
PurslaneM2GA楼主2022/9/17 23:17

RT , sub1 的最后两个点过不去

#include<bits/stdc++.h>
#define int __int128
#define ffor(i,a,b) for(int i=(a);i<=(b);i++)
#define roff(i,a,b) for(int i=(a);i>=(b);i--)
using namespace std;
const int MOD=1145141,MAXN=1145141+100;
namespace IO {
	int read(void) {
		int s=0,f=0; char ch=getchar();
		while(!(ch>='0'&&ch<='9')) f=(ch=='-'),ch=getchar();
		while(ch>='0'&&ch<='9') s=(s<<1)+(s<<3)+(ch^48),ch=getchar();
		return f?-s:s;
	}
	void write(int x) {
		if(x<0) putchar('-'),x=-x;
		if(x>=10) write(x/10);
		return putchar(x%10+'0'),void();
	}
};
using namespace IO;
int qpow(int base,int p) {
	int ans=1; base%=MOD;
	while(p) {
		if(p&1) ans*=base,ans%=MOD;
		base*=base,base%=MOD,p>>=1;
	}
	return ans;
}
int n,pre[MAXN];
int prod(int l,int r) {
	l%=MOD,r%=MOD;
	if(r==0) r=MOD;
	if(l==0) l++; if(r==MOD) r--;
	return pre[r]*qpow(pre[l-1],MOD-2)%MOD;	
}
pair<int,int> calc(int a,int b) { //计算 a...b 乘积模 1145141 的值 ( 把 1145141 去掉 ) , 同时返回 1145141 的因子个数 
	if(a>b) return {1,0};
	if(a==b) {
		if(a%MOD==0) return {1,1};
		return {a%MOD,0};	
	}
	int cnt=0;
	if(a%MOD==0) cnt++,a++; if(b%MOD==0) cnt++,b--;
	int l=(a-1)/MOD,r=b/MOD;
	int sum=r-l;
	if(sum==0) return {prod(a%MOD,b%MOD),sum+cnt};
	return {qpow(prod(1,MOD-1),sum-1)*prod(a%MOD,MOD-1)%MOD*prod(1,b%MOD)%MOD,cnt+sum};
}
signed main() {
	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	pre[1]=1,pre[0]=1;
	ffor(i,2,MOD-1) pre[i]=pre[i-1]*i%MOD;
	pre[MOD]=pre[MOD-1];
	int t=read(); 
	while(t--) {
		int n,k; n=read(),k=read();
		if(n==1) {write(1),puts("");continue;}
		int mul=qpow(qpow(k-1,n-1),MOD-2);
		auto pr1=calc(n*k-n+1,n*k-1),pr2=calc(1,n-1);
		if((k-1)%MOD==0) pr2.second+=n-1;
		if(pr1.second-pr2.second>0) write(0),puts("");
		else if(pr1.second-pr2.second<0) write(-1),puts("");
		else {
			int K=pr1.first*qpow(pr2.first,MOD-2)%MOD;
			int res=K*mul%MOD;
			write(res),puts("");
		}
	}
	return 0;
}
2022/9/17 23:17
加载中...