题目描述
现在有好多种砝码,他们的重量是 w0,w1,w2,… 每种各一个。问用这些砝码能不能表示一个重量为m的东西。
Input
单组测试数据。
第一行有两个整数w,m (2 ≤ w ≤ 10^9, 1 ≤ m ≤ 10^9)。
Output
如果能,输出YES,否则输出NO。
样例
input
3 7
output
YES
样例解释
样例解释:可以将重物和3放到一个托盘中,9和1放到另外一个托盘中。
题解
如果没有天平的话,可以看到,m的w进制数必须只有0 1,因为砝码只有两种情况,放与不放。
可是本题有天平,所以m得w进制数必须是两个只有0 1的数相减得到的。
所以只要判断(m%w)的情况就可以了。
只有三种情况,0 1 w-1。
但我们发现,当m%w=w-1时,有连续进位的情况。
所以,m=m/w+1。
然后贴代码 P党瑟瑟发抖⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄
var w,m:longint;
begin
readln(w,m);
while m>0 do
begin
if (m mod w=1) or (m mod w=0) then m:=m div w
else if (m mod w=w-1) then m:=m div w+1
else begin writeln('NO'); halt; end;
end;
writeln('YES');
end.