【A/B%m+扩展欧几里得】hdu 1576 A/B

来源:互联网 发布:月度m2数据 编辑:程序博客网 时间:2024/04/29 03:55

hdu 1576 A/B

http://acm.hdu.edu.cn/showproblem.php?pid=1576

思路

A/B%m经典问题,在(B,m)=1的情况下,转换为Bx+my = n ,扩展欧几里得得到最小正整数解即可,数论水题!

逆元详解

http://blog.csdn.net/acdreamers/article/details/8220787


参考代码

#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;typedef long long ll;const int _max = 20 + 10;ll n,a,b,x,y,d;ll extended_gcd(ll a,ll b,ll &x,ll &y){//ax+by=gcd(x,y) if(b == 0){x = 1; y = 0; return a;} ll d = extended_gcd(b,a%b,y,x); y-=a/b*x; return d;}int main(){  #ifndef ONLINE_JUDGE  freopen("input.txt","r",stdin);  #endif // ONLINE_JUDGE  int T;cin>>T;  while(T--){    scanf("%d%d",&n,&b);    d = extended_gcd(b,9973,x,y);    x*=n;    x = (x%9973 + 9973)%9973;//最小正整数    printf("%lld\n",x);  }  return 0;}
  • 加粗 Ctrl + B
  • 斜体 Ctrl + I
  • 引用 Ctrl + Q
  • 插入链接 Ctrl + L
  • 插入代码 Ctrl + K
  • 插入图片 Ctrl + G
  • 提升标题 Ctrl + H
  • 有序列表 Ctrl + O
  • 无序列表 Ctrl + U
  • 横线 Ctrl + R
  • 撤销 Ctrl + Z
  • 重做 Ctrl + Y
0 0
原创粉丝点击