boj 1202 分苹果问题 把苹果总数可以看成1+2+4.... 2的幂的和的形式

用m个数表示1-n任意一个数,则可以考虑把n看成2的幂的和进行分解,m个数最多表示到2^m-1个数

 

 

 

地址:http://acm.scs.bupt.cn/onlinejudge/showproblem.php?problem_id=1202

 

AppleAndBox Submit: 552    Accepted:254 Time Limit: 1000MS  Memory Limit: 65536K

Description
Monica有N个苹果和M个盘子,现在她需要将N个苹果分放到M个盘子里。

因为Monica希望做到一个很好的分配策略,不论Chandler需要多少个(1到N)苹果时,她总能拿出若干盘,这些盘子里的苹果数之和就是Chandler所需要的,而不必重新调整每个盘子里的苹果。


现在Monica告诉你N和M,请你帮她判断是否存在这样的分配策略。


Input
多则测试数据,以两个0结束。
每组数据占一行,两个整数N,M。
1 <= N < 2^32, 1 <= M <= 25


Output
对应每组输入数据,如果存在一种分配策略则输出“YES”,否则输出“NO”。



Sample Input

2 1
4 2
6 4
0 0


Sample Output

NO
NO
YES


Source

 

 

#include<iostream>
using namespace std;
int main()
{
    int n,m,i;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        if(n==0&&m==0)
        break;
        if((1<<m)>n)           //关键代码,m个盘子最多可以表示(2^m)-1 个数 如3个盘子1+2+4 
        printf("YES/n");
        else
        printf("NO/n");                          
                                 }
                  system("pause");
   
   
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值