题目


#include<iostream>
#define en '\n'
using namespace std;
typedef long long ll;
const ll mod=9973;
void ex_gcd(ll a,ll b,ll &x,ll &y)
{
if(!b){
x=1,y=0;
return;
}
ex_gcd(b,a%b,x,y);
ll r=x;
x=y,y=r-a/b*y;
}
int main()
{
int T;scanf("%d",&T);
ll x,y;
while(T--)
{
ll n,B;scanf("%lld%lld",&n,&B);
B%=mod;
ex_gcd(B,mod,x,y);
x=(x+mod)%mod;
printf("%lld\n",n*x%mod);
}
}
#include<iostream>
#define en '\n'
using namespace std;
typedef long long ll;
const int N=1e4+5;
const ll mod=9973;
ll inv[N];
ll niyuan(ll x)
{
if(x<=N-5) return inv[x];
return mod-mod/x*niyuan(mod%x)%mod;
}
void init()
{
inv[1]=1;
for(int i=2;i<=N-5;++i)
inv[i]=mod-mod/i*inv[mod%i]%mod;
}
int main()
{
init();
int T;scanf("%d",&T);
while(T--)
{
ll n,B;scanf("%lld%lld",&n,&B);
B%=mod;
printf("%lld\n",n*niyuan(B)%mod);
}
}