zoukankan      html  css  js  c++  java
  • 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));
    	}
    } 
    
  • 相关阅读:
    数据库连接池
    Apache- DBUtils框架学习
    权限表的设计
    Java的I/O对文件的操作
    Java下载文件
    Java连接MySQL数据库
    C#用log4net记录日志
    C#多线程和线程池
    C#利用反射动态调用DLL并返回结果,和获取程序集的信息
    CephRGW 在多个RGW负载均衡场景下,RGW 大文件并发分片上传功能验证
  • 原文地址:https://www.cnblogs.com/jasony/p/13843269.html
Copyright © 2011-2022 走看看