第六章 數學問題 -------- 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):擴充套件歐幾里得演算法筆記套件演算法
- 擴充套件歐幾里得演算法公式快速推導套件演算法公式
- 尤拉函式、整除分塊和擴充套件歐幾里得函式套件
- [待更新]歐幾里得演算法(輾轉相除法)與擴充歐幾里得演算法演算法
- 類歐幾里得演算法學習筆記演算法筆記
- 歐幾里得演算法與 EX演算法
- 萬能歐幾里得演算法演算法
- Python如何用歐幾里得求逆元Python
- C++等差數列(數論、歐幾里得輾轉相除gcd)C++GC
- 28、(向量)歐幾里得距離計算
- 數論入門基礎(同餘定理/費馬小定理/擴充套件歐幾里德演算法/中國剩餘定理)套件演算法
- 求最大公公約數(最大公因數)—— 歐幾里得演算法演算法
- 斐波那契問題和擴充套件套件
- ASP.NET Core擴充套件庫之Http通用擴充套件ASP.NET套件HTTP
- 演算法設計與分析-01歐幾里得演算法
- Spring之藉助Redis設計訪問計數器之擴充套件篇SpringRedis套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- Kotlin的幾個擴充套件函式Kotlin套件函式
- Golang浮點數精度丟失問題擴充套件包解決方案Golang套件
- Scrapy之pipeline&擴充套件套件
- 數論分塊擴充套件套件
- 擴充套件叢集blk數套件
- ES6入門之數值的擴充套件套件
- 洛谷 P6362 平面歐幾里得最小生成樹
- 再學Blazor——擴充套件方法Blazor套件
- CCF NOI 1028 判斷互質 :利用歐幾里得演算法最大公因數演算法
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- PHP 操作 Redis 之 phpredis 擴充套件PHPRedis套件
- burpsuite擴充套件開發之PythonUI套件Python
- Dubbo系列之 (一)SPI擴充套件套件
- DOM擴充套件之HTML5套件HTML
- [開發效率]Kotlin之擴充套件Kotlin套件
- ES6之字串擴充套件字串套件
- es6-數值擴充套件套件
- 輾轉相除法(歐幾里得演算法)(gcd)模板及其原理演算法GC