51Nod 1109 01組成的N的倍數

2022-08-21 15:00:18 字數 944 閱讀 6658

題目概述:

給定乙個自然數n,找出乙個m,使得m > 0且m是n的倍數,並且m的10進製表示只包含0或1。求最小的m。

例如:n = 4,m = 100。

input

輸入1個數n。(1 <= n <= 10^6)
output

輸出符合條件的最小的m。
input示例

4
output示例

100

思路:  因為每一次都只有0或者1兩個選擇,並且m的位數由1位逐次遞增,我們就可以用廣度優先搜尋的方式逐層拓展求出最先得到的那個m 即為最小的n的倍數。由於題目只說明m>=1,並未指明上限

m可能遠遠超出long long 的範圍,所以我們用對n的餘數來判斷當前的m是否滿足,在儲存餘數的同時我們需要儲存m的狀態保證找到結果時能正確輸出m;在這裡我們還需要做乙個優化就是,對於

已經出現過的餘數,在拓展下去也是無用,所以我們保證每個餘數只出現一次,這樣就大大的優化了時間!好了話不多說直接上**

**如下:

1 #include2 #include3 #include4 #include5 #include67

using

namespace

std;

8const

int maxn =5e6;

9struct

node;

13bool vis[maxn];//

用於剪枝 避免重複計算 浪費時間

14 queueq;

15int

n;16

void

bfs()

1733

for(int i=0;i<=1;i++)

3444}45

}46}47

intmain()

4854

return0;

55 }

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 ...

51Nod 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 ...

51Nod 1109 01組成的N的倍數

題目鏈結 思路 一開始看的到這個題時,想都沒想直接乙個暴力上去了,結果很顯然。再後來做完後面的題,在回看這個題時,想到了廣搜。寫乙個簡單 沒剪枝 的廣搜,自己隨便測試一下,乙個9能測出來,然後直接就上了5個9,電腦直接宕機了 電腦效能太差 沒辦法啊!開機重啟,中間又花費了很多時間,我不死心,又重新測...