我的代码是酱紫的
#include<cstdio>
using namespace std;
const int MAXN=15;
int n;
long long m[MAXN],c[MAXN];
void exgcd(long long a,long long b,long long &x,long long &y)
{
if (!b)
{
x=1;y=0;
return ;
}
exgcd(b,a%b,x,y);
long long t=x;
x=y;
y=t-(a/b)*y;
return ;
}
long long crt()
{
long long M=1;
long long sum=0;
for (int i=1;i<=n;i++)
{
M=M*(long long)m[i];
}
for (int i=1;i<=n;i++)
{
long long m_head_i=M/m[i];
long long x0,y0;
exgcd(m_head_i,m[i],x0,y0);
sum=(sum+m_head_i*x0*c[i]);
sum=(sum%M+M)%M;
}
return sum;
}
int main()
{
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
scanf("%lld%lld",&m[i],&c[i]);
}
long long ans=crt();
printf("%lld",ans);
}
也成功A掉了
蛋柿
我有一组数据是
2
99650306 96546827
9985 4321
答案应当是
206771281471
但我输出
674441372525
这究竟是为何