现在有好多种砝码,他们的重量是 w0,w1,w2,…
每种各一个。问用这些砝码能不能表示一个重量为m的东西。
样例解释:可以将重物和3放到一个托盘中,9和1放到另外一个托盘中。
输入
单组测试数据。
第一行有两个整数w,m (2 ≤ w ≤ 10^9, 1 ≤ m ≤ 10^9)。
输出
如果能,输出YES,否则输出NO。
输入样例
3 7
输出样例
YES
把n转换为w进制数,为1或0 时表示取或不取,其余情况都是错的
需要注意的是,如样例:
3的倍数:1 3 6 9 27
我们可以发现2个3可以表示1个6
解决:
if((n+1)%w==0)
n=(n+1)/w;
#include<iostream>
using namespace std;
#define ll long long
int main()
{
ll n,w,tmp=0;
cin>>w>>n;
while(n)
{
if(n%w<2) n/=w;
else if((n+1)%w==0)
n=(n+1)/w;
else
{
cout<<"No";
break;
}
}
cout<<"YES";
return 0;
}