c 實現 醜數

2021-10-07 17:03:34 字數 913 閱讀 7779

題目:

把只包含質因子2、3和5的數稱作醜數(ugly number)。例如6、8都是醜數,但14不是,因為它包含質因子7。 習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。

思路:

只需要把得到的醜數不斷地乘以2、3、5之後並放入他們應該放置的位置即可,而此題的難點就在於如何有序的放在合適的位置。

1乘以 (2、3、5)=2、3、5;2乘以(2、3、5)=4、6、10;3乘以(2、3、5)=6,9,15;5乘以(2、3、5)=10、15、25;

從這裡我們可以看到如果不加策略地新增醜數是會有重複並且無序,

而在2x,3y,5z中,如果x=y=z那麼最小丑數一定是乘以2的,但關鍵是有可能存在x>y.>z的情況,所以我們要維持三個指標來記錄當前乘以2、乘以3、乘以5的最小值,然後當其被選為新的最小值後,要把相應的指標+1;因為這個指標會逐漸遍歷整個陣列,因此最終陣列中的每乙個值都會被乘以2、乘以3、乘以5,也就是實現了我們最開始的想法,只不過不是同時成乘以2、3、5,而是在需要的時候乘以2、3、5.

class

solution

intgetuglynumber_solution

(int index)

while((

*u3)*3

<=uglynumbers[nextugly]

)while((

*u5)*5

<=uglynumbers[nextugly]

)++nextugly;

}int ugly=uglynumbers[nextugly-1]

;delete

uglynumbers;

//釋放空間

return ugly;}}

;

完數 C 實現

求1 n內的完數,所謂的完數是這樣的數,它的所有因子相加等於它自身,比如6有3個因子1,2,3,1 2 3 6,那麼6是完數。即完數是等於其所有因子 除了它自己 相加和的數。測試資料有多組,輸入n,n資料範圍不大。對於每組輸入,請輸出1 n內所有的完數。如有案例輸出有多個數字,用空格隔開,輸出最後不...

猜數遊戲c實現

猜數遊戲c實現 正好剛剛c寫了個猜數遊戲,一同和大家分享下,沒有進行 任何優化,但其中有些程式設計的思想還是值得 的 這個猜數遊戲的功能是 計算機產生乙個隨機四位數,讓人猜這個四位數是多少,人輸入 這個四位數後,計算機首先判斷這個四個數字有幾個猜對了,並且 在猜對的數字中又有幾位位置也是對的,將結果...

數獨解法 C 實現

include using namespace std 構造完成標誌 bool sign false 建立數獨矩陣 int num 9 9 函式宣告 void input void output bool check int n,int key int dfs int n 主函式 int main ...