zoukankan      html  css  js  c++  java
  • 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 }
    心之所动 且就随缘去吧
  • 相关阅读:
    Mysql一些复杂的语句
    Tomcat部署记事
    [转]Java中的事务
    Junit单元测试笔记
    Mysql之执行计划
    当产品部署出现问题时
    CSS之绝对定位那些事
    CSS之浮动那些事
    Tomcat一些小事
    NEC的学习笔记
  • 原文地址:https://www.cnblogs.com/iat14/p/11403607.html
Copyright © 2011-2022 走看看