求调刚才的T4
  • 板块学术版
  • 楼主封禁用户
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/1/28 18:02
  • 上次更新2024/1/28 20:16:13
查看原帖
求调刚才的T4
676498
封禁用户楼主2024/1/28 18:02
//sum s1~st∈[0,1](prod [si=1](1+pi*(k-1))*prod pi|r(n/t)/gcd(r(n/t),t)((pi^2-1)*pi^(4ai-2)+1)*prod pi|gcd(r(n/t),t)(pi^2(pi^2-1)(pi^4(ai-si)-1)/(pi^4-1)+1))
//o(i,si)=(pi^4(ai-si)-1)/(pi^4-1)
//o(i,si)=1+pi^4+...+pi^4(ai-si-1)
//ui=pi^2(pi^2-1)o(i,0)+1
//vi=pi^2(pi^2-1)o(i,1)+1
//yi=(pi^2-1)*pi^(4ai-2)+1
//wi=1+pi*(k-1)
//sum s|r(n)(prod pi|s(wi)*prod pi|r(n/t)/gcd(r(n/t),t)(yi)*prod pi|gcd(r(n/t),t)([si=0]ui+[si=1]vi))
#include<bits/stdc++.h>
using namespace std;
typedef __int128_t li;
typedef long long ll;
#define gc getchar()
inline li rd(){li x=0;char c=gc;while(c<48||c>57) c=gc;while(c>47&&c<58) x=(x<<3)+(x<<1)+(c^48),c=gc;return x;}
li T,k,m,t,p[19],a[19],u[19],v[19],y[19],w[19],ans;//π(67)=14,2*3*5*...*67*71>1e24
inline li q(li a,li b){return !b?1:b==1?a:b&1?q(a*a%m,b>>1)*a%m:q(a*a%m,b>>1);}
inline li o(li p,int a){li r=0;for(int i=0;i<=a;++i) r=(r*p+1)%m;return r;}
inline void dfs(int x,li e){
	if(x==t){
		ans+=e;
		return;
	}
	dfs(x+1,e*y[x]%m*u[x]%m);//sx=0
	if(a[x]==1) dfs(x+1,e*w[x]%m);//sx=1
	else dfs(x+1,e*w[x]%m*v[x]%m);
}
int main(){
	T=rd();
	while(T--){
		k=rd(),m=rd(),t=rd();
		for(int i=0;i<t;++i) p[i]=rd(),a[i]=rd();
		for(int i=0;i<t;++i){
			w[i]=(1+p[i]*(k-1))%m;
			u[i]=p[i]%m*p[i]%m*((p[i]%m*p[i]%m+m-1)%m)%m*o(p[i]%m*(p[i]%m)%m*(p[i]%m)%m*(p[i]%m)%m,a[i]-1)%m;
			v[i]=p[i]%m*p[i]%m*((p[i]%m*p[i]%m+m-1)%m)%m*o(p[i]%m*(p[i]%m)%m*(p[i]%m)%m*(p[i]%m)%m,a[i]-2)%m;
			y[i]=((p[i]%m*p[i]%m+m-1)%m)%m*q(p[i]%m,4*a[i]-2)+1;
		}
		ans=0,dfs(0,1);
		cout<<(int)(ans%m)<<"\n";
	}
	return 0;
}
2024/1/28 18:02
加载中...