Poj1465 Multiple(BFS+餘數判重)

題意:給定一個自然數N,以及M個不同的數字X1,X2,...Xm,求N的最小正整數倍數,滿足這個數的每個數字都是M個數字中的其中一個

算法:對於給定兩個數A,B,如果A和B模N都相同,設爲C,即:

A=x*N+C

B=y*N+C

那麼如果在A後面加上一個數字能夠被N整除,則在B後面加上這個數字也肯定可以被N整除

即:(A*10+X)%N==(B*10+X)%N

因此可以利用模N的結果進行判重,只保留相同餘數的最小數,於是採用BFS搜索

 

由於可能出現大整數,處理技巧:用一個結構,保存每次添加的數字,然後形成一個數字鏈表,最後打印輸出

 

代碼如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章