n的倍數BFS小水題

2021-07-29 12:26:18 字數 855 閱讀 1923

寫乙個程式,對於給定的乙個自然數n(1≤n≤4999),和m個互不相同的十進位制數字x1, x2,…,xm (至少乙個), 找出n的乙個最小的正的倍數,使得該倍數中沒有x1,x2,…,xm 之外的其它數字。

第一行為整數n,第二行為整數 m,接下來m行 分別列出 數字 x1,x2..xm 。

輸出這個倍數,如果無解輸出0。

約束條件:

在所有的測試資料中答案都不會超過500位。

499947

690

60007996

約束條件:

在所有的測試資料中答案都不會超過500位。

1s256m

按數字乙個乙個寫上的法則進行廣搜,注意元素的餘數無後效性所以可以用乙個bool陣列剪枝,注意要判首位不能為0.最後將記錄的di值拼湊起來就可以了(函式print)

#include

#include

#include

#include

#include

using namespace std;

int n,m,digit[10];

int head,tail;

struct nodeq[1000001];

bool pg[1000001];

void print(int x)

print(q[x].pre);

cout>n>>m;

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

sort(digit+1,digit+m+1);

head=0;

tail=1;

while(head}}

}cout<<0<}

BFS 01組成的N的倍數

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

輸出是m的倍數或n的倍數 但不是m和n的公倍數的數

夜語蟬鳴 problem f 輸出是m的倍數或n的倍數 但不是m和n的公倍數的數 time limit 1 sec memory limit 2 mb submit 6303 solved 1979 submit status web board description 輸出1 k之間是m的倍數或n...

n個數的和為n個數的公倍數

題意 輸入乙個n n 200 給出n個不同的數,使得這n個數的和為這n個數每個數的倍數。思路 首先容易知道,當n 2的時候無解 兩個1不算,因為要求這n個數是不同的 n大於2的時候這樣構造n個數 1 2 3 0 2 3 1 2 3 2 2 3 n 3 3 n 2 可以看到,這n個數的和為2 3 n ...