題目描述:快速計算出由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 ...