【NOIp2018TG笔试】问题求解2

题目大意:

填空:方程$ab=(a|b)(a&b),a,bin[0,31]$,共有      组解。

 

 

解答:

引理:$(a|b)+(a&b)=a+b$

证明:

设$a=sum2^{m},min{}M$且$b=sum2^{n},nin{}N$

则$a&b=sum2^{p},pin{}P=Mcap{}N{}$且$a|b=sum2^{q},qin{}Q=Mcup{}N=M+N-P$

$ herefore{}P+Q=M+N$

$ herefore{}(a|b)+(a&b)=a+b$

 

设$a|b=x$,则$a&b=a+b-x$

代入原方程,得$ab=x(a+b-x)$

得$x_{1}=a,x_{2}=b$

 

$i$

若$x=a$即$a|b=a$

$Leftrightarrow$对于每一个二进制位,都有$c_{a}|c_{b}=c_{a}$

$ herefore$有$5^{3}$组解

$ii$

当$x=b$时同理有$5^{3}$组解

 

注意到$i$和$ii$给出的解集有交集,为${<a,b>|a=b}$,有$|I|=32$组。

$ herefore$答案为$2 imes5^{3}-|I|=454$

小结

掌握该引理可使证明思路更清晰。

原文地址:https://www.cnblogs.com/Hansue/p/10200387.html