PRINSEC
Author: sigma_g
Tester: multiple, see announcement
Editorialist: sigma_g
DIFFICULTY:
EASY
PREREQUISITES:
Bit operations
PROBLEM
Print YES if certain values of (x,y) matches a given set of tuples otherwise print NO.
Buggy code plain text
QUICK EXPLANATION
"Spoiler
You need to get (x,y)=(2,11) to get a wrong output. You can manipulate r via some quick bit operations to get r=25.
EXPLANATION
Step 1
Note that there is a stray YEZ
the output. That is the bug in the code. So, we now know that we need to trigger x = 2
and y = 11
.
Step 2
This implies that (r ^ 3) & (r ^ 31) == 3
and (r ^ 18) | (r ^ 16) == 4
. Also, we know that r
is less than 32, so it will be of 5 bits.
Step 3
We have two equations and we can satisfy them bit-by-bit. That is to say, for each bit of r
, check if it’s being 0 or 1 can satisfy both the equations. Building r
bitwise we’ll get 11001
, which is 25.
SOLUTIONS:
Text submission.
Setter's Solution
25