欧几里得gcd+扩展欧几里得exgcd模板
2016-07-24 00:16
330 查看
gcd:辗转相除
参考核心代码:
int gcd(int a,int b)
{
if(!b) return a;
return gcd(b,a%b);
}
exgcd:扩展欧几里得 求gcd(x,y)=ax+by;
int exgcd(int a,int b,int &x,int &y)
{
if(!b)
{
x=1;
y=0;
return a;
}
int gcd=exgcd(b,a%b,x,y);
int tmp=x;
x=y;
y=tmp-(a/b)*y;
return gcd;
}模 ay===1(mod m)即 ay=1+mk;
使其有解 代码如下:
int mod_inverse(int a,int m)
{
int x,y;
exgcd(a,m,x,y);
return (m+x%m)%m;
//由于可能x为负数,所以对m取模再+m再取模使x为正
}
参考核心代码:
int gcd(int a,int b)
{
if(!b) return a;
return gcd(b,a%b);
}
exgcd:扩展欧几里得 求gcd(x,y)=ax+by;
int exgcd(int a,int b,int &x,int &y)
{
if(!b)
{
x=1;
y=0;
return a;
}
int gcd=exgcd(b,a%b,x,y);
int tmp=x;
x=y;
y=tmp-(a/b)*y;
return gcd;
}模 ay===1(mod m)即 ay=1+mk;
使其有解 代码如下:
int mod_inverse(int a,int m)
{
int x,y;
exgcd(a,m,x,y);
return (m+x%m)%m;
//由于可能x为负数,所以对m取模再+m再取模使x为正
}
相关文章推荐
- 如何在 LibreOffice 中创建模板以实现省时高效
- 设计模式之行为型模式 - 调用行为的传递问题
- [div+css]晒晒最新制作专题推广页模板
- 2008大学生入党申请书 模板
- IMAIL多语言模板两套Outlook&Gmail模板下载
- 在PHP中使用模板的方法
- 深入解析php模板技术原理【一】
- Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
- 在ASP中不用模板生成HTML静态页直接生成.html页面
- 基于HTML模板和JSON数据的JavaScript交互(移动端)
- C#模板方法模式(Template Method Pattern)实例教程
- javascript文本模板用法实例
- 关于Asp代码与页面的分离模板技术第1/3页
- php模板原理讲解
- 需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
- DataGrid 动态添加模板列 实现代码
- 详解java模板和回调机制
- C++模板之特化与偏特化详解
- 使用Lua编写Web端模板引擎的实例代码分享
- vs.net2008添加模板方法