双六(扩展欧几里得算法)a

1,双六是一个类似于大富翁的游戏。奇奇怪怪。

2,如何搞懂这些屁东西。还是得用我的老套路。

3,

#include
#include
using namespace std;
int extgcd(int a,int b,int& x,int& y)
{
    int d=a;
    if(b!=0)
    {
        d=extgcd(b,a%b,y,x);
        y-=(a/b)*x;
    }
    else
    {
        x=1;
        y=0;
    }
    return d;
}
int main(){
    int a,b,x,y;
    int cnt[4]={0};
    cin>>a>>b;
    if(extgcd(a,b,x,y)!=1)
    {
        cout<<"-1"<<endl;
        return 0;
    }
    if(x>0) cnt[0]=x;
    else if(x<0) cnt[2]=-x;
    if(y>0) cnt[1]=y;
    else if(y<0) cnt[3]=-y;
    for(int i=0;i<4;i++) cout<<cnt[i];
    cout<<endl;
    return 0; 
}

4,为啥这都有些长。

x,y啥都没有为啥能弄进去呢。

先得背代码的阶段是否可以进化?

5,双向传递。反正就是这个意思。

6,扩展欧几里得算法的核心。

int extgcd(int a,int b,int& x,int& y)
{
    int d=a;
    if(b!=0)
    {
        d=extgcd(b,a%b,y,x);
        y-=(a/b)*x;
    }
    else
    {
        x=1;
        y=0;
    }
    return d;
}

 7,模拟代码失败了。因为没有X,Y的确切值来看。

gcd(a,b)可以表示为a和b最小的正线性组合

 

 

 

 

 

 

 

1、int;

int是C++关键字,表示整型,其大小是32位有符号整型,表示的范围是-2,147,483,648 到 

2,147,483,647;在声明和定义变量时使用,它表示的意思是所声明或所定义的变量为整型变量。

如果其用于函数参数时,其传递方向为值传递,即只能将实参的值传递给形参,而不能将

形参的值传递给实参。

例如:通过这种方式去进行交换两个数是无法达到目的的。

例子1:

 

#include
using namespace std;            
voidswap1(inta,intb)
{   
     inttmp;   
     tmp = a;    
     a = b;    
     b = tmp;    
 }   
 int main(){   
     inta = 1;    
     intb = 2;    
     swap1(a, b);    
     cout<<"a = "<

你可能感兴趣的:(双六(扩展欧几里得算法)a)