寫乙個程式,對於給定的乙個自然數n(1≤n≤4999),和m個互不相同的十進位制數字x1, x2,…,xm (至少乙個), 找出n的乙個最小的正的倍數,使得該倍數中沒有x1,x2,…,xm 之外的其它數字。
第一行為整數n,第二行為整數 m,接下來m行 分別列出 數字 x1,x2..xm 。
輸出這個倍數,如果無解輸出0。
約束條件:
在所有的測試資料中答案都不會超過500位。
499947690
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 ...