社区讨论

数据强度有待提高

P4720【模板】扩展卢卡斯定理 / exLucas参与者 19已保存回复 25

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
24 条
当前快照
1 份
快照标识符
@mkhv0nz9
此快照首次捕获于
2026/01/17 13:21
上个月
此快照最后确认于
2026/01/17 20:25
上个月
查看原帖
correct:
CPP
struct ds{
	int s[N],p,k,r;
	int ca(int n){
		if(n<p) return s[n];
		return ca(n/p)*qp(s[p-1],n/p,r)%r*s[n%p]%r;
	}
	int re(int x){
		if(x<p) return 0;
		return re(x/p)+(x/p);
	}
	int sec(int n,int m,int x,int y){
		p=x,k=y,r=qp(x,y,inf);
		int c=re(n)-re(m)-re(n-m);
		s[0]=1;
		for(int i=1;i<r;i++){
			s[i]=s[i-1];
			if(i%p) s[i]=s[i]*i%r;
		}
		int ans=qp(p,c,r);
		int d1=ca(n);
		int d2=ca(n-m);
		int d3=ca(m);
		return ans*d1%r*inv(d2,r)%r*inv(d3,r)%r;
	}
};
incorrect:
CPP
struct ds{
	int s[N],p,k,r;
	int ca(int n){
		if(n<p) return s[n];
		return ca(n/p)*qp(s[p-1],n/p,r)%r*s[n%p]%r;
	}
	int re(int x){
		if(x<p) return 0;
		return re(x/p)+(x/p);
	}
	int sec(int n,int m,int x,int y){
		p=x,k=y,r=qp(x,y,inf);
		int c=re(n)-re(m)-re(n-m);
		s[0]=1;
		for(int i=1;i<p;i++){
			s[i]=s[i-1];
			if(i%p) s[i]=s[i]*i%r;
		}
		int ans=qp(p,c,r);
		int d1=ca(n);
		int d2=ca(n-m);
		int d3=ca(m);
		return ans*d1%r*inv(d2,r)%r*inv(d3,r)%r;
	}
};
码的,下面这玩意居然能过。
给个 hack。
input:
CPP
3 1 4
output:
CPP
3

回复

25 条回复,欢迎继续交流。

正在加载回复...