51nod 1449 砝碼稱重

2021-08-21 10:54:12 字數 1095 閱讀 5386

給培訓找貪心題的時候看到的,一道和貪心沒任何關係的小水題。

首先如果有解,那麼有: ∑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 發現網上...