1449 砝码称重

xiaoxiao2021-02-28  101

1449 砝码称重 题目来源:  CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 40  难度:4级算法题  收藏  关注

现在有好多种砝码,他们的重量是  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; }
转载请注明原文地址: https://www.6miu.com/read-47512.html

最新回复(0)