集训————数论,扩展欧几里得,高精度求模以及同余定理;

今天真是要死的一天,数论学的头疼,感觉好多东西学起来很生疏,找不到节奏感,算了废话不多说;扩展欧几里得首先说扩展欧几里得的作用,可以用来求一个数的逆元,以及解特定的二元一次方程的解;具体内容:int exgcd(int a,int b,int &x,int &y)//特别注意x和y一定是参引入,否则在回溯时不能改变,导致不能求解;{ if(b==0) ...
摘要由CSDN通过智能技术生成

今天真是要死的一天,数论学的头疼,感觉好多东西学起来很生疏,找不到节奏感,算了废话不多说;

扩展欧几里得

首先说扩展欧几里得的作用,可以用来求一个数的逆元,以及解特定的二元一次方程的解;

具体内容:

int exgcd(int a,int b,int &x,int &y)//特别注意x和y一定是参引入,否则在回溯时不能改变,导致不能求解;
{
    if(b==0)
    {
        x=1;
        y=0;
        return    a;
    }
    int r=exgecd(b,a%b,x,y);
    int t=y;
    y=x-(a/b)*y;
    x=t;
    return    r;
}

在经过这一番回溯变化后,得到了x,y的一个特殊解,然后我们可以通过这个特殊解来解除a的逆元

公式是a的逆=(x+m)%m;m就是b、参数里的b;

然后感觉这个就没什么好讲的了,有什么新的知识点,在以后碰见了继续补充;

高精度求模

在处理分子很大时,可以考虑的一个方式,要点是把要处理的分子当成string来处理;

代码

int high(string s,const int &mod)//有关这个const int &mod,在我看的一本书上说,这样可以提高效率,至于原因我也记得不是很清楚;
{
    int ans=0;
    for(int i=0;i,s.size();i++)
    {
        ans=(ans*10+s[i]-'0')%mod;//可以看出,大数取模就是同余定理的推广使用
    }
    return  ans;
}

 

同余定理

 就是说一个数a和b如果(a-b)%mod==0 ,那么就说a和b对于mod同余记为a≡b(mod m),也就是说,a,b分别对mod的求模值一样。

表述:
(a+b)%

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值