51Nod 1109 01組成的N的倍數

2021-08-11 19:40:05 字數 783 閱讀 9713

題目鏈結

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

題解:這個題主要運用同餘定理,廣搜加剪枝,為了節省時間,我們在結構體中使用乙個變數。這個變數是對於n取餘後的值,每次只需對這個變數乘10或者乘10+1;在對n取餘即可,這樣可減少時間。

#include #include #include #include #include #include using namespace std;

bool book[1100000];

int n;

struct node

;void bfs()

{ queueq;

node p;

p.s=p.s+'1';

p.data=1;

book[1]=true;

q.push(p);

while(!q.empty())

{node p,q;

p=q.front();

q.pop();

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

{int term=(p.data*10+i)%n;

if(term==0)

{p.s+='0'+i;

cout<

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的倍數

01組成的n的倍數 給定乙個自然數n,找出乙個m,使得m 0且m是n的倍數,並且m的10進製表示只包含0或1。求最小的m。例如 n 4,m 100。input 輸入1個數n。1 n 10 6 output 輸出符合條件的最小的m。sample input4sample output100 解題思路 ...