我这哪里错了?大佬教教俺
查看原帖
我这哪里错了?大佬教教俺
387741
fml4d1楼主2021/2/28 15:58
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

ll n,a[20],m[20],M=1;
ll x=0;
ll read(){
  char ch;
  ch=getchar();
  ll ans=0;
  while(ch<'0'||ch>'9')ch=getchar();
  while(ch>='0'&&ch<='9')ans=(ans<<1)+(ans<<3)+(ch^48),ch=getchar();
  return ans;
}
ll qpow(ll x,ll y,ll p){
   ll res=1;
   while(y){
     if(y&1)res=res*x%p;
     x=x*x%p;
     y>>=1;
   }
   return res%p;
}
ll ni(ll mi,ll i){
  return qpow(mi,m[i]-2,m[i]);
}
int main()
{
    n=read();
    for(ll i=1;i<=n;i++)m[i]=read(),a[i]=read(),M*=m[i];
    for(ll i=1;i<=n;i++){
      ll mi=M/m[i];
      ll k=ni(mi,i);
      x+=a[i]*mi*k;
    }
    printf("%lld\n",x%M);
    return 0;
}

2021/2/28 15:58
加载中...