求只有2,3,5組成的第n小個數字

2021-10-23 22:26:47 字數 1738 閱讀 5929

題目描述:快速計算出由2,3,5三個數字組成的由小到大的第n個數,包含2,3,5,22,33,55單個及重複數字

定義乙個int number常量,從1開始搜尋,如果是由2,3,5組成則加入陣列中,一直找到第n個。

public

static

intfindnumber01

(int n)

int[

] res =

newint

[n+1];

int index =1;

int number =1;

while

(index <= n)

}return res[n];}

//判斷是否為2,3,5組成的數字

public

static

boolean

is235

(int number)

return

true

;}

**如下:

public

static

intfindnumber

(int n)

return arr[n]

;}

arr[ ] 陣列來存放前n個數,初始化arr[0] = 0。由2,3,5組成的數共有三種型別,分別為以2結尾,以3結尾,以5結尾,也即個位數要麼為2,要麼為3,要麼為5。

三個指標p1, p2, p3 標記所指向要乘以的因子即arr[p1]、arr[p2]、arr[p3],這是因為我們要組成的數字都是由arr[p1]*10+2、arr[p2]*10+3、arr[p3]*10+5構成:

i =1:

0*10+

20*10

+30*

10+5 選擇最小的乙個存入arr[1]

=2;i =2:

2*10+

20*10

+30*

10+5 選擇最小的乙個存入arr[2]

=3;i =3:

2*10+

22*10

+30*

10+5 選擇最小的乙個存入arr[3]

=5;i =4:

2*10+

22*10

+32*

10+5 選擇最小的乙個存入arr[4]

=22;22由arr[1]

*10+2 構成

i =5:3

*10+2

2*10+

32*10

+5 選擇最小的乙個存入arr[5]

=23;23由arr[1]

*10+3 構成

i =6:3

*10+2

3*10+

32*10

+5 選擇最小的乙個存入arr[6]

=25;25由arr[1]

*10+5 構成

i =7:3

*10+2

3*10+

33*10

+5 選擇最小的乙個存入arr[7]

=32;32由arr[2]

*10+2 構成

i =8:5

*10+2

3*10+

33*10

+5 選擇最小的乙個存入arr[8]

=33;33由arr[2]

*10+3 構成..

..

BFS 01組成的N的倍數

由題餘數為零 則該串必定為1開頭的01串 由bfs特性可得首解最優 因此隊頭1 向後新增0 或 1 進行取模搜尋 當前取模值單一後推運算即可 否則展開規律相同 無意義 pragma gcc optimize 2 include include include include include incl...

搜尋 H 找n的倍數(0,1組成的)

一.題目描述 關於正整數n,編寫乙個程式,求得乙個只由0和1構成的數,是n的整數倍 乙個就好 二.解題思路 這道題可以用搜尋,深搜。但我還不大會用。剛剛開始接觸這類題,以後想出來了再補上。我用的方法是慢慢的列舉,從1,10,11,100,101,111,1000.這樣子,想出來了乙個迴圈可以解決 就...

51 nod 1109 01組成的N的倍數

1109 01組成的n的倍數 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 給定乙個自然數n,找出乙個m,使得m 0且m是n的倍數,並且m的10進製表示只包含0或1。求最小的m。例如 n 4,m 100。input 輸入1個數n。1 n 10 6 output ...