码迷,mamicode.com
首页 > 其他好文 > 详细

NOIP的板子们 (未完待续)

时间:2017-08-09 10:04:12      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:整数   正整数   style   pre   quick   lan   gcd   show   a*   

一、数论

技术分享
void gcd(int a,int b,int &d,int &x,int &y)
{
    if(!b) { d=a; x=1; y=0; }
    else { gcd(b,a%b,d,y,x);  y-=x*(a/b); }
}
(扩展)欧几里得

 

技术分享
//解同余方程 ax≡c(mod b)
//转化为ax-by=c 
void solve()
{
    gcd(a,b,g,x0,y0);  
    if(c%g) printf("no solution");
    x=c/g*x0; y=c/g*y0;
    printf("任意一组解:%d",x);
    a/=g; b/=g;
    while(x-b>0) { x-=b; y+=a; }
    printf("最小x正整数解:%d",x); 
}
同余方程

 

扩展欧几里得、同余方程 解析:http://www.cnblogs.com/TheRoadToTheGold/p/6645383.html

 

技术分享
int quickmul(int a,int b,int p)
{
    int ans=1;
    for(;b;b>>=1,a=a*a%p)
     if(b&1) ans=ans*a%p;
    return ans;
}  
快速幂

 

NOIP的板子们 (未完待续)

标签:整数   正整数   style   pre   quick   lan   gcd   show   a*   

原文地址:http://www.cnblogs.com/TheRoadToTheGold/p/7323273.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!