日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ACM数论之旅4---扩展欧几里德算法(欧几里德(・∀・)?是谁?)

發(fā)布時間:2023/12/13 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ACM数论之旅4---扩展欧几里德算法(欧几里德(・∀・)?是谁?) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

為什么老是碰上

擴展歐幾里德算法

( ????? )最討厭數(shù)論了

看來是時候?qū)W一學了

?

度娘百科說:

首先,?ax+by = gcd(a, b) 這個公式肯定有解 (( ????? )她說根據(jù)數(shù)論中的相關(guān)定理可以證明,反正我信了)

所以?ax+by = gcd(a, b) * k 也肯定有解 (廢話,把x和y乘k倍就好了)

所以,這個公式我們寫作ax+by = d,(gcd(a, b) | d)

gcd(a, b)?|?d,表示d能整除gcd,這個符號在數(shù)學上經(jīng)常見

?

?

那么已知 a,b 求 一組解 x,y 滿足?ax+by = gcd(a, b) 這個公式

?

1 #include<cstdio> 2 typedef long long LL; 3 void extend_Eulid(LL a, LL b, LL &x, LL &y, LL &d){ 4 if (!b) {d = a, x = 1, y = 0;} 5 else{ 6 extend_Eulid(b, a % b, y, x, d); 7 y -= x * (a / b); 8 } 9 } 10 int main(){ 11 LL a, b, d, x, y; 12 while(~scanf("%lld%lld", &a, &b)){ 13 extend_Eulid(a, b, x, y, d); 14 printf("%lld*a + %lld*b = %lld\n", x, y, d); 15 } 16 }

?

?

有些人喜歡極度簡化,這是病,得治(,,? ? ?,,)比如在下

1 void ex_gcd(LL a, LL b, LL &d, LL &x, LL &y){ 2 if(!b){d = a; x = 1; y = 0;} 3 else{ex_gcd(b, a%b, d, y, x); y -= x*(a/b);} 4 }

?

連名字都簡化了。。。

?

?

?

( ????? )解完了

睡覺~~~

?

轉(zhuǎn)載于:https://www.cnblogs.com/linyujun/p/5167916.html

總結(jié)

以上是生活随笔為你收集整理的ACM数论之旅4---扩展欧几里德算法(欧几里德(・∀・)?是谁?)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。