WA求调
  • 板块P5221 Product
  • 楼主Lacrymabre
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/12/11 13:14
  • 上次更新2023/11/3 22:30:32
查看原帖
WA求调
120438
Lacrymabre楼主2021/12/11 13:14

rt,30%30 \% 后的数据全部输出0

#include<iostream>
#include<cstdio>
#include<iomanip>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<stack>
#include<vector>
#include<map>
#include<set>

#define ll long long
#define _it set<node>::iterator
#define MAX 0x7fffffff
#define db double
#define init inline int
#define INF 0X3fffffff
#define ts cout<<"done\n";
#define N 1000005

using namespace std;

inline long long read(){
	ll f=1,s=0;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9')s=(s<<1)+(s<<3)+ch-'0',ch=getchar();
	return s*f;
}

const int mod = 104857601;

ll n,m;

ll qpow(ll x,ll y){
	if(!y) return 1;
	if(y==1) return x;
	ll res=qpow(x,y/2);
	if(y&1) return (((res*res)%mod)*x)%mod;
	return (res*res)%mod;
}

vector<int>p;
short u[N],v[N];

void prime(){
	v[1]=1;u[1]=1;
	for(int i=2;i<=N;i++){
		if(v[i]==0) {p.push_back(i);u[i]=-1;}
		int cnt=p.size();
		for(int j=0;j<cnt&&i*p[j]<=N;j++){
			v[i*p[j]]=1;
			if(!(i%p[j])) {u[i*p[j]]=0;break;}
			else u[i*p[j]]=-u[i];
		}
	}
	for(int i=1;i<=N;i++) u[i]=u[i-1]+u[i];
}

ll cale(ll n){
	ll r=0,res=0;
	for(int l=1;l<=n;l=r+1){
		r=n/(n/l);
		res+=1ll*(n/l)%(mod-1)*(n/l)%(mod-1)*(u[r]-u[l-1]+mod-1)%(mod-1);
		res=(res+mod-1)%(mod-1);
	}
	return res%(mod-1);
}

long long jc(ll x){
	ll res=1;
	for(ll i=2;i<=x;i++) res=1ll*res*i,res%=mod;
	return res;
}

int main(){
	n=read();
	prime();
//	cout<<"done\n";
	ll S=jc(n);
	ll ans=1;
	for(ll d=1;d<=n;d++){
		int res=cale(n/d);
		ans=(1ll*ans*qpow(d*d,res))%mod;
		//	cout<<res<<" "<<ans<<"\n";
	}
	ans=qpow(ans,mod-2);
	cout<<(1ll*ans*qpow(S,2*n)%mod)%mod;
	return 0;
}


2021/12/11 13:14
加载中...