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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

江西财经大学第二届程序设计竞赛同步赛 H大时钟 (扩展欧几里得)

發布時間:2024/7/5 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 江西财经大学第二届程序设计竞赛同步赛 H大时钟 (扩展欧几里得) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏈接:https://ac.nowcoder.com/acm/contest/635/H
來源:牛客網

時間限制:C/C++ 1秒,其他語言2秒
空間限制:C/C++ 262144K,其他語言524288K
64bit IO Format: %lld

題目描述

艾蘭島和沃夫島的時間算法很不一樣,它們都擁有它們自己的魔法大時鐘。以我們的時間來看艾蘭島的大時鐘起鳴在b, b+a, b+2a, b+3a,… ,(a,b均為正整數)并且沃夫島的大時鐘起鳴在d, d+c, d+2c, d+3c,….(c,d均為正整數)因為計時的方法不同,兩邊經常打仗,但可能有某些時間點兩邊的大時鐘同時起鳴。我們稱這樣的時間點為和平點。求第一個和平點。(如果沒有這樣的時間點,輸出-1)

輸入描述:

第一行輸入兩個整數a,b ( 1< a,b < 5*108)

第二行輸入兩個整數c,d ( 1< c,d < 5*108)

輸出描述:

第一個和平點所表示的時間(如果沒有這樣的時間點,輸出-1) 示例1

輸入

復制 20 2 9 19

輸出

復制 82 示例2

輸入

復制 2 1 16 12

輸出

復制 -1

解題思路:由題目我們可以很容易列出方程b+ax=d+cy,令b<d,如果b>d我們就交換(a,c),(b,d),這樣的話我們就只需要求出y的最小正整數解,然后d+cy必定是答案,我們把式子轉化為ax-cy=d-b,然后再轉化為ax+cy=d-b,改成求y的最大非正整數解,答案也隨即變成d-cy了。
代碼: #include<iostream> using namespace std; typedef long long ll; ll a,b,c,d; void exgcd(ll a,ll b,ll &x,ll &y,ll &c){if(!b){x=1,y=0,c=a;}else{exgcd(b,a%b,y,x,c);y-=a/b*x;} } int main(){cin>>a>>b>>c>>d;if(b>d){swap(b,d);swap(a,c);}ll x,y,gcd;exgcd(a,c,x,y,gcd);if((d-b)%gcd){puts("-1");return 0;}x*=(d-b)/gcd; y*=(d-b)/gcd;y%=(a/gcd);while(y>0) y-=a/gcd;cout<<d-c*y<<endl;return 0; }

?

轉載于:https://www.cnblogs.com/zjl192628928/p/10776689.html

總結

以上是生活随笔為你收集整理的江西财经大学第二届程序设计竞赛同步赛 H大时钟 (扩展欧几里得)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。