现在有好多种砝码,他们的重量是 w0,w1,w2,... 每种各一个。问用这些砝码能不能表示一个重量为m的东西。
样例解释:可以将重物和3放到一个托盘中,9和1放到另外一个托盘中。
Input
单组测试数据。 第一行有两个整数w,m (2 ≤ w ≤ 10^9, 1 ≤ m ≤ 10^9)。
Output
如果能,输出YES,否则输出NO。
Input示例
3 7
Output示例
YES
///思维题 /*题解: 将所有的砝码重量看成W进制数,则多个砝码的重量和为1,0组成的w进制数。 而本题可将问题转换成m是否可以表示成两个由01组成的w进制数的差 两个01组成的数相差即只有下面四种情况: 0-0=0, 1-0=1, 0-1=w-1(向高位错一后) 1-1=0 (注:每个砝码只有一个,故01组成的数,中每一位只有一个为1,另一个为0,例如1010,0101) */ #include<bits/stdc++.h> using namespace std; int w,m; int main() { scanf("%d%d",&w,&m); while(m){ if(m%w==1||m%w==0)m=m/w; //上述情况2,1,4 else if(m%w==w-1)m=m/w+1;//上述情况 3 else {puts("NO");return 0;} } puts("YES"); return 0; }