1. 程式人生 > >【NOIp2018TG筆試】問題求解2

【NOIp2018TG筆試】問題求解2

pan p s left ora right mar ont mil cup

題目大意:

填空:方程$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$

小結

掌握該引理可使證明思路更清晰。

【NOIp2018TG筆試】問題求解2