給培訓找貪心題的時候看到的,一道和貪心沒任何關係的小水題。
首先如果有解,那麼有: ∑i
wai−
∑iwb
i=m ∑iw
ai−∑
iwbi
=m
容易發現若(m
wx,w
)=1 (mw
x,w)
=1
,那麼將等式兩邊除以wx
w
x後,左式必然(因為有解)將剩餘乙個±1
±
1,將其移至右邊將使得w|
m+1 w|m
+1
或w|m−
1 w|m
−1
(當w>
2 w
>
2時顯然只會有乙個滿足,而w≤
2 w≤2
時必然有解)。我們繼續如法炮製最終便會將等式兩邊都變成
1 1
。容易通過將這個過程反向得出
m' role="presentation" style="position: relative;">m
m的解(當然題目沒有要求)。
故我們直接按上述過程計算,若某時x/
|m′±
1 x⧸|
m′±1
,則無解。總時間複雜度o(
logm
) o(l
ogm)
。
#include
#include
#include
#include
using
namespace
std;
#define clr(a) memset(a,0,sizeof(a))
typedef
unsigned
long
long ull;
typedef
long
long ll;
//--container--
//void cl();
for(;;)
}printf("%s\n",fg?"yes":"no");
};int main();
51nod 1449 砝碼稱重
好題。如果答案為yes,則m可以表示為 m a 0 w 0 a 1 w 1 如果等號左右兩邊同時減去a 0 w 0,即1 1或者0,等號右邊必然是w的倍數,也就是說,等號左邊也必然是w的倍數。也就是說,如果m m 1或者m 1其中有乙個為w的倍數,那麼才能使得等式成立。必要不充分條件 等式左右兩邊同...
51nod 1449 砝碼稱重
現在有好多種砝碼,他們的重量是 w0,w1,w2,每種各乙個。問用這些砝碼能不能表示乙個重量為m的東西。單組測試資料。第一行有兩個整數w,m 2 w 10 9,1 m 10 9 如果能,輸出yes,否則輸出no。input 3 7 output yes 樣例解釋 樣例解釋 可以將重物和3放到乙個托盤...
51nod1449 砝碼稱重
現在有好多種砝碼,他們的重量是 w0,w1,w2,每種各乙個。問用這些砝碼能不能表示乙個重量為m的東西。樣例解釋 可以將重物和3放到乙個托盤中,9和1放到另外乙個托盤中。單組測試資料。第一行有兩個整數w,m 2 w 10 9,1 m 10 9 如果能,輸出yes,否則輸出no。3 7yes 發現網上...