• CF1421A XORwice


    题意

    给定 (a)(b) ,找到一个 (x) 使得 ((aoplus x)+(boplus x)) 的值最小,输出这个值

    Solution

    考场想法

    因为这个 (x) 要和两个数进行异或,所以要找一个合适的值。好像又是废话

    因为 (tleq 10^4) ,所以不能进行枚举等非 (O(1)) 操作。

    观察样例,发现最后一组的答案为 (0) ,恰好是 (1oplus 1) 的值。

    这时就可以有一个大胆的想法,是不是答案就是给出的 (a,b) 异或之值。

    将样例进行验证,发现是对的。

    完结撒花

    蒟蒻认为的正确做法

    因为异或也是按位运算,所以考虑对某一位进行考虑,然后扩展到所有位上。

    如果 (a)(b) 的某一相同位上一个是 (0) ,一个是 (1) ,那么 (x) 那一位上不管是什么,异或完还是一个 (0) 和一个 (1) 。也就是相加永远为 (1) ,所以不用管。

    如果 (a)(b) 的某一相同位上均为 (1)(0) ,那么 (x) 那一位只要对应为 (1)(0) 就可保证异或完相加为 (0)

    现在总结一下,就是: (a,b) 某一位相同,则答案对应的那一位为 (0)(a,b) 某一位不同,则答案对应的那一位为 (1)

    我艸,这不就是异或运算吗!

    是的,这和我第一个做法最后的结论相同,输出 (aoplus b) 即可。

    代码

    #include<bits/stdc++.h>
    
    using namespace std;
    
    int main(){
    	int a,b,T;
    	scanf("%d",&T); 
    	while(T--){
    		scanf("%d%d",&a,&b);
    		printf("%d
    ",(a^b));
    	}
    } 
    
  • 相关阅读:
    PHP基础介绍
    day96
    day95
    day94
    day93
    day93之微信推送
    22个必须知道的css技巧
    利用Js或Css滤镜实现IE6中PNG图片半透明效果 IE6PNG妥妥的
    dedecms调用日期格式化形式大全
    innerHTML动态添加html代码和脚本兼容性问题处理方法
  • 原文地址:https://www.cnblogs.com/jasony/p/13843269.html
Copyright © 2020-2023  润新知