【NOIp2018TG笔试】问题求解2
题目大意:
填空:方程$ab=(a|b)(a\&b),a,b\in[0,31]$,共有 组解。
解答:
引理:$(a|b)+(a\&b)=a+b$
证明:
设$a=\sum2^{m},m\in{}M$且$b=\sum2^{n},n\in{}N$
则$a\&b=\sum2^{p},p\in{}P=M\cap{}N{}$且$a|b=\sum2^{q},q\in{}Q=M\cup{}N=M+N-P$
$\therefore{}P+Q=M+N$
$\therefore{}(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}$
$\therefore$有$5^{3}$组解
$ii$
当$x=b$时同理有$5^{3}$组解
注意到$i$和$ii$给出的解集有交集,为$\{<a,b>|a=b\}$,有$|I|=32$组。
$\therefore$答案为$2\times5^{3}-|I|=454$
小结
掌握该引理可使证明思路更清晰。