一個數以最少步驟分解為另外兩個數和差問題的解決

來源:互聯網
上載者:User

有同學面試的時候遇到要求一個數以最少步驟分解為另外兩個數和差問題的解決,大約描述是“將一個數分解為幾個數的和或者差的形式,並且使步驟最小”。

這類題的解題理論是數論裡面的一次不定方程的整數解。
引用 百度百科:
定義1. 形如 ax + by = c ( a,b,c∈Z,a,b不同時為零)的方程稱為二元一次不定方程。
定理1. 方程 ax + by = c 有解的充要是 ( a,b ) | c;
定理2. 若( a,b ) = 1,且 x0,y0為 ax + by = c 的一個解,則方程的一切解都可以表示成
 x=x0+t*b/(a,b)
 y=y0+t*a/(a,b)

 

定理3. n元一次不定方程 a1x1 + a2x2 +…+ anxn = c,( a1,a2,…an,c∈N )有解的充要條件是:( a1,a2,…an ) | c.

例如將任意數分解5和7的和差形式,求最少需要多少次可以完成。
轉換成數學描述就是求解
5a+7b=A
的整數解 a=a0+Xm, b=b0+Ym, 並且使|a|+|b|最小。

以求解123分解為5和7的組合為例:
1、驗證:5和7的最大公約數(5,7)是1, 1|123, 可以計算。
2、使用輾轉相除法
5a+7b=123,
a=(123-7b)/5 = 25-b-2(1+b)/5 令(1+b)/5=m得
b=-1+5m, a=25-(-1+5m)-2m = 26-7m
下面求最小的|a|+|b|.

m<=1/5或者m>=26/7時min(|a|+|b|)=min(|a-b|)=min(|27-12m|)取m整數值m=4,得min(|a|+|b|)=21

1/5<= m <=26/7時min(|a|+|b|) = min(a+b)=min(25-2m)取m=3得min(|a|+|b|)=19

可見取m=3時可得最小步驟為19次和差運算,且a=5,b=14, 即123=5*5+7*14.

 

對於多個數的情況,也可以使用多元不定方程類似解決。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.