拓展欧几里得模板

来源:互联网 发布:淘宝商城孕妇装秋装 编辑:程序博客网 时间:2024/06/08 23:06
#include <iostream> using namespace std; typedef long long ll;int exgcd(int a,int b,int &x,int &y) //模板{      if(b==0)      {          x=1;          y=0;          return a;      }      int ans=exgcd(b,a%b,x,y);      int temp=x;      x=y;      y=temp-a/b*y;      return ans;   //gcd(a,b)}   int main() {    int a,b,c,x,y;    cin>>a>>b>>c; //求 a*x+b*y=c的一组最小解     int gcd=exgcd(a,b,x,y);    if(c%gcd!=0) cout<<"无解";    else     {        cout<<"有解\n";         int n_=c/gcd;        int xt=n_*x;        int b_=b/gcd;        if(b_<0) b_=-b_;        xt%=b_;        if(xt<=0) xt+=b_;        cout<<xt;//最小解的x//          n'=c/gcd;  b'=b/gcd;  a'=a/gcd //        xt = n'*x + b'* t   (t为整数) //          yt= n'*y - a'* t      }      return 0; } 
原创粉丝点击