现在有好多种砝码,他们的重量是 w0,w1,w2,... w0,w1,w2,... 每种各一个。问用这些砝码能不能表示一个重量为m的东西。
样例解释:可以将重物和3放到一个托盘中,9和1放到另外一个托盘中。
第一行有两个整数w,m (2 ≤ w ≤ 10^9, 1 ≤ m ≤ 10^9)。
3 7
YES
这个题目是以前做的题,突然又看了,想了半天才懂为啥这样做了,写上题解,加深自己的理解吧。
解释下:就是问m是否由一些w构成,思路是将m弄成w进制的有(0------W-1)构成的一串数字,模拟
进制转换,如果取出来的余数等于0的话 说明当前这个地方不需要找到对应的w多少次方的一个数来
放到天平,如果是1的话,说明需要放一个来抵消,最重要的说明一点说明那个余数等于w-1的话,说明
需要找到这个数上一位相对应的砝码,这样让它加起来等于w,然后等于取一个当前对应的砝码来抵消。
不太懂这个的话,写一个例子就可以了。
#include<stdio.h> int main() { int a,b; scanf("%d%d",&a,&b); while(b) { int temp=b%a; if(temp==0||temp==1); else if(temp == a-1) b++; else { printf("NO\n"); return 0; } b=b/a; } printf("YES\n"); return 0; }