zoukankan      html  css  js  c++  java
  • 蚂蚁的难题(一) http://acm.nyist.net/JudgeOnline/status.php?pid=744

     

    蚂蚁的难题(一)

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:2
     
    描述

    小蚂蚁童鞋最近迷上了位运算,他感觉位运算非常神奇。不过他最近遇到了一个难题:

    给定一个区间[a,b],在区间里寻找两个数x和y,使得x异或y最大。来,帮帮他吧!

     
    输入
    有多组测试数据(以EOF结尾)。
    每组数据输入两个数a,b.(0<=a<b<2^63)
    输出
    输出a到b之间,异或最大的值。
    样例输入
    1 2
    8 9
    样例输出
    3
    1
    来源
    蚂蚁系列
    上传者
    菜鸟咋了

       这是一道简单的数学题。 
     
       求区间[a, b] 之间的 异或 最大, 推几组数据,我们可以发现 

       结果都是 2^n - 1;     

       那么关键问题就是 求 n 的大小。 

       我们发现 n 的大小 与 a^b 有关。

    #include <stdio.h>  
    int main()  
    {  
        long long a;
    	long long b;  
        while(scanf("%lld %lld",&a,&b)!=EOF) 
        {   
          
            int count = 0;
            long long cj=1,x;
            x = a ^ b;  
            while(x)  
            {
                    count++;
                    x =x/2;  
            }
            while(count)
            {
                    cj*=2;
                    count--;
            }
            printf("%lld
    ",cj-1);  
        }  
        return 0;  
    } 
    
  • 相关阅读:
    go笔记
    脚本
    php-log
    idea maven scala
    Corporative Network
    uva1160
    比map更强大的multimap
    Message Decowding
    kmp 的next 数组求法
    Nearest Common Ancestors
  • 原文地址:https://www.cnblogs.com/wangyouxuan/p/3272128.html
Copyright © 2011-2022 走看看