首页 > 其他 > 详细

luogu1082 [NOIp2012]同余方程 (扩展欧几里得)

时间:2018-10-01 21:20:20      阅读:188      评论:0      收藏:0      [点我收藏+]

由于保证有解,所以1%gcd(x,y)=0,所以gcd(x,y)=1,直接做就行了

 1 #include<bits/stdc++.h>
 2 #define pa pair<int,int>
 3 #define CLR(a,x) memset(a,x,sizeof(a))
 4 using namespace std;
 5 typedef long long ll;
 6 const int maxn=1;
 7 
 8 inline ll rd(){
 9     ll x=0;char c=getchar();ll neg=1;
10     while(c<0||c>9){if(c==-) neg=-1;c=getchar();}
11     while(c>=0&&c<=9) x=x*10+c-0,c=getchar();
12     return x*neg;
13 }
14 
15 void exgcd(ll a,ll b,ll &x,ll &y){
16     if(b==0){x=1,y=0;return;}
17     ll x1,y1;
18     exgcd(b,a%b,x1,y1);
19     x=y1;y=x1-a/b*y1;
20 }
21 
22 int main(){
23     ll a=rd(),b=rd();ll x,y;
24     exgcd(a,b,x,y);
25     printf("%lld\n",(x%b+b)%b);
26     return 0;
27 }

 

luogu1082 [NOIp2012]同余方程 (扩展欧几里得)

原文:https://www.cnblogs.com/Ressed/p/9735705.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!