【題目來源】
https://www.lanqiao.cn/problems/652/learning/
【題目背景】
本題為填空題,只需要算出結果后,在代碼中使用輸出語句將所填結果輸出即可。
【題目描述】
從昏迷中醒來,小明發現自己被關在X星球的廢礦車里。礦車停在平直的廢棄的軌道上。
他的面前是兩個按鈕,分別寫著“F”和“B”。
小明突然記起來,這兩個按鈕可以控制礦車在軌道上前進和后退。按 F,會前進 97 米。按 B 會后退 127 米。
透過昏暗的燈光,小明看到自己前方 1 米遠正好有個監控探頭。
他必須設法使得礦車正好停在攝像頭的下方,才有機會爭取同伴的援助。
或許,通過多次操作 F 和 B 可以辦到。
礦車上的動力已經不太足,黃色的警示燈在默默閃爍...每次進行 F 或 B 操作都會消耗一定的能量。
小明飛快地計算,至少要多少次操作,才能把礦車準確地停在前方 1 米遠的地方。
請填寫為了達成目標,最少需要操作的次數。
【算法分析】
●?本題本質是求解 97x+127y=1。
● 本題利用擴展歐幾里得方程(https://blog.csdn.net/hnjzsyjyj/article/details/147673627)可求解。
【算法代碼】
#include <bits/stdc++.h>
using namespace std;int exgcd(int a,int b,int &x,int &y) {if(b==0) {x=1,y=0;return a;}int d=exgcd(b,a%b,y,x);y-=a/b*x;return d;
}int main() {int a=97,b=127;int x,y;exgcd(a,b,x,y);cout<<abs(x)+abs(y)<<endl;return 0;
}/*
out:97
*/
【參考文獻】
https://blog.csdn.net/hnjzsyjyj/article/details/147673627
https://blog.csdn.net/hnjzsyjyj/article/details/147845970
?