首页 > 位运算之谜
头像 __故人__
发表于 2020-09-21 14:27:04
分析 对于加法我们可以考虑为,两个为 ,那么该位变为 ,下一位 。而异或满足两个为 ,那么该位变为 。而下一位 ,则可以考虑哪些位要进位,所以我们得到第一个式子 。但是我们要考虑到进位之后 和 要没有同一个位为 ,这才是可行的方案。 代码 #include<bits/std 展开全文
头像 Dear㉿You
发表于 2020-09-29 09:10:25
分析 位运算之谜让我来口胡一把。首先a+b的值为x,a&b的值为y,说明a,b最小都得是y。然后就只剩下x - 2 * y供我们分配。 然后根据与的性质,0&0=0,0&1=0,1&1=1,也就是说,当我们把x - 2 * y表示成二进制,只要随便分这其中的1 就 展开全文
头像 Kur1su
发表于 2020-09-26 23:04:33
Description Solution 基础太差了,没想出这题。对于 其实是二进制的不进位运算, 因此有公式。该公式表示 二进制位上均为 1 的相加会进位。那么 其中需要满足 且 与 二进制位上不能有相同的,否则输出-1. Code #include<bits/stdc++.h 展开全文
头像 Bernard5
发表于 2020-09-22 19:26:25
已知 我们知道与是半加,所以必定满足,并且,固定的时候,当且仅当时,取得最小值。 也就是说: 当的时候, 当的时候,无法满足 当的时候,我们先假设,并且按照二进制位展开: 假设,我们先设,并且按照二进制位展开: //a 1001001 //b 1001001 要满足,并且要增大,应该 展开全文
头像 灯又烬
发表于 2020-09-20 10:45:43
题意 题解 将a与b看为2进制数,根据按位与性质易知在a与b不为0的情况下,一定是大于等于的,只需要判断此数所剩的2进制位,是否均为a&b为0的2进制位。 code #include <bits/stdc++.h> #define reg register #define ll 展开全文
头像 秃头小白
发表于 2020-09-23 19:47:05
题目链接 https://ac.nowcoder.com/acm/contest/7412/D 解题思路 (来自:zzugzx)对于二进制的某一位来说,a xor b表示不进位的加法,a & b<<1可以表示加法的进位。所以就有了公式a+b=a xor b+2∗(a & 展开全文