zoukankan      html  css  js  c++  java
  • Boxes

    题目大意:有两个箱子,一个箱子装了A个球,一个箱子装了B个球,可以从球多的那个箱子拿出来球少的箱子里面球的总数放在少的那个箱子里面,问能否把球全部放在一个箱子里面?

    分析:很容易求出来最后放的拿一下一定是A == B,再继续往前推A/=2....所以判断拿球的过程中是否有2^k次方数,如果有就能放,没有肯定不能放,特殊的AB开始有为0的,直接模拟也可以,注意两个箱子大小交替不会超过两次,如果超过,一定不能交换成功,因为如果能摆放成功的话,最多交换一次。

    代码如下:

    =======================================================================================================================

    #include<stdio.h>
    #include<algorithm>
    #include<string.h>
    #include<math.h>
    #include<set>
    using namespace std;
    
    int main()
    {
        int A, B, cnt=0, ok=0, k=0;
    
        scanf("%d%d", &A, &B);
    
        set<int> s;
    
        if(A > B)
            swap(A, B);
    
        while(1)
        {
            if(A > B)
            {
                swap(A, B);
                k++;
            }
    
            if(A == 0)
                break;
    
            if(s.find(A) != s.end() || k==2)
            {
                ok = 1;
                break;
            }
            else
                s.insert(A);
            cnt++;
    
            B -= A, A += A;
        }
    
        if(ok)
            printf("-1
    ");
        else
            printf("%d
    ", cnt);
    
        return 0;
    }
  • 相关阅读:
    ArcgisServerJS固件位置
    PrintTemplate说明
    地图打印仅地图4X
    地图打印4X
    IIS下设置跨域访问问题--Access-Control-Allow-Origin 站点跨域请求的问题
    javascript的 热点图怎么写
    Flex 加载shp
    Flex 加载dwg
    Flex 加载tiff
    Flex 加载 wmf,svg
  • 原文地址:https://www.cnblogs.com/liuxin13/p/4836309.html
Copyright © 2011-2022 走看看