51nod 1449 砝码称重(经典贪心+进制)

来源:互联网 发布:伤感网络歌曲女生唱的 编辑:程序博客网 时间:2024/05/18 02:23

现在有好多种砝码,他们的重量是 w0,w1,w2,...  每种各一个。问用这些砝码能不能表示一个重量为m的东西。

样例解释:可以将重物和3放到一个托盘中,91放到另外一个托盘中。


Input
单组测试数据。第一行有两个整数w,m (2 ≤ w ≤ 10^9, 1 ≤ m ≤ 10^9)。
Output
如果能,输出YES,否则输出NO。
Input示例
3 7
Output示例
YES


题解:

贪心

若没有天平,n这个数就是0 1组成的w进制的数

若有天平,n这个数就是 两个 0 1 组成的数之差

即只有下面四种情况:

0-0=0   1-0=1    0-1=w-1(向高位借一后)  1-1=0

分为三大类:

第一大类:相应位数之差为0  1的就很明了

第二大类:相应位数之差为w-1的,借位后的那一位在后面给它加上 1  就好了

第三大类:其余情况就是无解了



#include<stdio.h>int main(){    int n,w;    while(scanf("%d%d",&w,&n)!=EOF)    {        int temp,flag=1;        while(n)        {            temp=n%w;            if(temp==1||temp==0)                n/=w;            else if(temp==w-1)                n=(n+1)/w;            else{                flag=0;                break;            }        }        if(flag) puts("YES");        else puts("NO");    }    return 0;}


0 0
原创粉丝点击