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

来源:互联网 发布:模特卡制作软件下载 编辑:程序博客网 时间:2024/05/16 17:58

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

 

 

 

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

 

AppleAndBoxSubmit: 552   Accepted:254Time 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");
   
   
    }

原创粉丝点击