全WA,求助
查看原帖
全WA,求助
147895
破壁人罗辑楼主2021/5/3 09:55
#include<bits/stdc++.h>
using namespace std;
inline int ifread()
{
	int ret=0;
	char c=getchar();
	while(c<'0' || c>'9') c=getchar();
	while(c>='0' && c<='9')
	{
		ret=(ret<<1)+(ret<<3)+c-'0';
		c=getchar();
	}
	return ret;
}
inline long long lfread()
{
	long long ret=0;
	char c=getchar();
	while(c<'0' || c>'9') c=getchar();
	while(c>='0' && c<='9')
	{
		ret=(ret<<1)+(ret<<3)+(c&15);
		c=getchar();
	}
	return ret;
}
inline void lfprint(long long x)
{
	if(x>9) lfprint(x/10);
	putchar(x%10+48);
}
inline long long exgcd(long long a,long long b,long long &x,long long &y)
{
	if(!b)
	{
		x=1;
		y=0;
		return a;
	}
	int ret=exgcd(b,a%b,y,x);
	y-=a/b*x;
	return ret;
}
inline long long gcd(long long a,long long b)
{
	return a==0 ? b : gcd(b%a,a);
}
unsigned long long a[5000000],ki[5000000];
int main()
{
	register int n=ifread();
	register long long p=lfread(),k=lfread();
	ki[0]=k;
	a[0]=lfread();
	register long long m=a[0],x,y;
	for(register int i=1;i<n;i++)
	{
		a[i]=lfread();
		m=m*a[i]/gcd(m,a[i]);
		ki[i]=ki[i-1]*k%p;
	}
	ki[0]=m/a[0]*k;
	for(register int i=1;i<n;i++) ki[i]=(ki[i]*m/a[i]%p+ki[i-1]+p)%p;
	exgcd(m,p,x,y);
	lfprint((ki[n-1]*((x%p+p)%p)+p)%p);
	return 0;
}

测试数据无问题,但是还是0分,求助

2021/5/3 09:55
加载中...