• hdu 6702 ^&^ 位运算


    (A  xor  C)  &  (B  xor  C) 在给定A,B的前提下,式子值最小,此时C的非0最小值是多少?

    位运算还是按位考虑

    a b c
    1 1 1 0
    1 0 0/1 0
    0 1 0/1 0
    0 0 0 0

     

    这是保证式子值最小下的abc关系,我们希望c最小,那么c可以取a&b。

    但是注意,题目中要求,C非0,所以如果a&b为0,则不行。当a&b为0时,我们应该找,最小的a,b有一个为1的位,将c的这位0变成1。

    一个是注意开long long这题正好比int大2倍,在一个是注意位运算优先级。第一次知道!= 优先级比位运算高.....

     1 #include <cstdio>
     2 #include <algorithm>
     3 using namespace std;
     4 typedef long long ll;
     5 ll a,b,res;
     6 int T;
     7 int main()
     8 {
     9     for (scanf("%d",&T);T != 0;T--)
    10     {
    11         scanf("%lld%lld",&a,&b);
    12         if ((a & b) != 0)
    13             res = a & b;
    14         else
    15             for (int i = 0;i <= 33;i++)
    16                 if ((a & ((ll)1 << i)) | (b & ((ll)1 << i)))
    17                 {
    18                     res = (ll)1 << i;
    19                     break;
    20                 }
    21         printf("%lld
    ",res);
    22     }
    23     return 0;
    24 }
    心之所动 且就随缘去吧
  • 相关阅读:
    树的重心备忘
    Hdu 2196
    HDU 1520
    TOJ1068 商务旅行
    携程HDU第一场1001
    USACO 4.3.2 The Primes
    Html常用标签的应用
    Html
    开班心得
    for循环练习及字符串处理
  • 原文地址:https://www.cnblogs.com/iat14/p/11403607.html
Copyright © 2020-2023  润新知