第六章 數學問題 -------- 6.7【擴充套件歐幾里得】一步之遙
題目:
一步之遙
從昏迷中醒來,小明發現自己被關在X星球的廢礦車裡。
礦車停在平直的廢棄的軌道上。
他的面前是兩個按鈕,分別寫著“F”和“B”。
小明突然記起來,這兩個按鈕可以控制礦車在軌道上前進和後退。
按F,會前進97米。按B會後退127米。
透過昏暗的燈光,小明看到自己前方1米遠正好有個監控探頭。
他必須設法使得礦車正好停在攝像頭的下方,才有機會爭取同伴的援助。
或許,通過多次操作F和B可以辦到。
礦車上的動力已經不太足,黃色的警示燈在默默閃爍…
每次進行 F 或 B 操作都會消耗一定的能量。
小明飛快地計算,至少要多少次操作,才能把礦車準確地停在前方1米遠的地方。
請填寫為了達成目標,最少需要操作的次數。
注意,需要提交的是一個整數,不要填寫任何無關內容(比如:解釋說明等)
思路:
暴力搜尋或者擴充套件歐幾里得演算法( 97x-127y=1 ax+by=m )。
程式碼:
public class 一步之遙 {
public static void main(String[] args) {
// 解法一 擴充套件歐幾里得演算法
try {
long ans = ExtGcd.linearEquation(97, -127, 1);
long x = ExtGcd.x;
long y = ExtGcd.y;
System.out.println(Math.abs(x) + Math.abs(y)); // 正確答案 97
} catch (Exception e) {
e.printStackTrace();
}
// 解法二 暴力搜尋
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
if (97*i - 127*j == 1) {
System.out.println(Math.abs(i) + Math.abs(j)); // 正確答案 97
break;
}
}
}
}
// 私有的靜態的內部類
private static class ExtGcd{
static long x,y;
public static long ext_gcd(long a,long b){
if (b==0) {
x = 1;
y = 0;
return a;
}
long res = ext_gcd(b, a%b);
long x1 = x;
x = y;
y = x1-a/b*y;
return res;
}
public static long linearEquation(long a,long b,long m) throws Exception{
long d = ext_gcd(a, b);
if(m%d!=0) throw new Exception("無解");
long n = m / d;
x *= n;
y *= n;
return d;
}
}
}
相關文章
- 第六章 數學問題 -------- 6.5 歐幾里得演算法及其擴充套件演算法套件
- 擴充套件歐幾里得套件
- 數論學習筆記 (4):擴充套件歐幾里得演算法筆記套件演算法
- 歐幾里得演算法與擴充套件歐幾里得演算法演算法套件
- 51nod 1352 集合計數(擴充套件歐幾里得)套件
- 淺談擴充套件歐幾里得演算法套件演算法
- POJ1061擴充套件歐幾里得定理套件
- 擴充套件歐幾里得的幾個定理以及證明套件
- 擴充套件歐幾里得演算法公式快速推導套件演算法公式
- 尤拉函式、整除分塊和擴充套件歐幾里得函式套件
- hdu Yet another end of the world(擴充套件歐幾里得定理推論)套件
- 關於Interceptor擴充套件問題套件
- 湘潭大學四月月賽C題A+B(擴充套件歐幾里得定理)套件
- OpenStack入門之擴充套件話題套件
- 斐波那契問題和擴充套件套件
- 關於使用擴充套件包的問題。套件
- ASP.NET Core擴充套件庫之Http通用擴充套件ASP.NET套件HTTP
- 程式設計之美:螞蟻爬杆問題的擴充套件程式設計套件
- 擴充套件的持久化上下文問題套件持久化
- 擴充套件叢集blk數套件
- 數論分塊擴充套件套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- 菜鳥學php擴充套件 之 hello world(一)PHP套件
- Spring之藉助Redis設計訪問計數器之擴充套件篇SpringRedis套件
- Golang浮點數精度丟失問題擴充套件包解決方案Golang套件
- ES6入門之數值的擴充套件套件
- 再學Blazor——擴充套件方法Blazor套件
- 表空間無法擴充套件問題處理套件
- 請教關於JAVA動態擴充套件問題Java套件
- es6-數值擴充套件套件
- ES6數字擴充套件套件
- WCF擴充套件:行為擴充套件Behavior Extension套件
- CONNECT BY 擴充套件用法,實現獲取bom級聯擴充套件數量套件
- Dubbo系列之 (一)SPI擴充套件套件
- DOM擴充套件之HTML5套件HTML
- PHP 操作 Redis 之 phpredis 擴充套件PHPRedis套件
- ES6之字串擴充套件字串套件
- Chrome瀏覽器擴充套件開發系列之十九:擴充套件開發示例Chrome瀏覽器套件