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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

康熙环球

發(fā)布時(shí)間:2024/4/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 康熙环球 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目大意:求一個(gè)同余方程tx+m≡ty+n (mod L)t的最小正整數(shù)解

首先我們可以把式子變形得到:t(x-y)≡(n-m) (mod L)

我們把(x-y)設(shè)為a,(n-m)設(shè)為s,可以得到ta≡s(mod L)

誒,好像比較熟悉啊,這就是同余方程的改進(jìn)版。

我們可以先利用擴(kuò)歐得到at+Ly=gcd(a,L)中t的一個(gè)特殊解t0,那么我們就可以把其他的解表示為t=t0+k*(L/gcd(L,a))

這個(gè)證明還是比較顯然的,ax+by=c,ax0+by0=c

所以,a(x-x0)+b(y-y0)=0就是a(x-x0)=-b(y-y0)

將兩邊同除以gcd(a,b)得到a/gcd(a,b)*(x-x0)=-b/gcd(a,b)*(y-y0)

又因?yàn)?strong>a/gcd(a,b)與b/gcd(a,b)互質(zhì),所以為了保證式子的等價(jià),顯然b/gcd(a,b)整除(x-x0)所以上述結(jié)論成立

由于我們解得的t是at+Ly=gcd(a,L)中的t,所以我們要把它乘以s/gcd(a,L),顯然沒(méi)有解的條件就是s%gcd(a,L)!=0

最后不要忘記是最小正整數(shù),帶入通向公式即可。%+%

最后,附上本題代碼:

1 #include<cstdio> 2 #include<iostream> 3 #define LL long long 4 using namespace std; 5 6 LL x,y,m,n,L,x1,y1,ans; 7 8 LL exgcd(LL a,LL b,LL &x1,LL &y1) 9 { 10 if(b==0) 11 { 12 x1=1; 13 y1=0; 14 return a; 15 } 16 ans=exgcd(b,a%b,x1,y1); 17 LL temp=x1; 18 x1=y1; 19 y1=temp-a/b*y1; 20 return ans; 21 } 22 int main() 23 { 24 cin>>x>>y>>m>>n>>L; 25 LL a=(m-n),s=(y-x); 26 if(a<0) 27 { 28 a=-a; 29 s=-s; 30 } 31 ans=exgcd(a,L,x1,y1); 32 if(s%ans!=0) 33 { 34 printf("Impossible\n"); 35 } 36 else 37 { 38 printf("%lld\n",(x1*(s/ans)%(L/ans)+(L/ans))%(L/ans)); 39 } 40 return 0; 41 }

?

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

總結(jié)

以上是生活随笔為你收集整理的康熙环球的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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