HDU 1576 扩展欧几里得

/*
    题目大意:
	    简单的中文数学题.
//题目中给出B与9973互质,可以直接套用小费马
//而我采用扩展的欧几里得算法解
*/
#include<iostream>
#include<cmath>
#include<cstring>
#include<string>
#include<iomanip>
#define MO 9973
using namespace std;

void ext_gcd(int a,int b,int &x,int &y)
{
    int t;
    if (b==0) { x=1; y=0; return; }
    else 
	{ 
		ext_gcd(b,a%b,x,y); 
		t=x; x=y; y=t-(a/b)*y;
	}
    return;
}

int main()
{
    int T;
	cin>>T;
	while(T--)
	{
	    int n,B,x,y;
		scanf("%d%d",&n,&B);
        ext_gcd(B,MO,x,y);
		x=(x+MO)%MO;
		int res=(x*n)%MO;
		cout<<res<<endl;
	}
    return 0;
}

你可能感兴趣的:(数学,HDU)