codeforces div 1 443 A. Short Program (位运算的理解)

题目链接:

题目链接

题意:

一段程序,最多5E5个操作,每个操作的格式为 <opt,x> ,opt表示位或,位异或,位与 三种位运算的一种,x表示范围0..1023的数。现在要求将该程序化简至最多 5个操作,使得对于0..1023的输入,输出与该程序同样的结果。

思路 :

关键在于想起,位运算还是按照二进制位的运算。我们考虑每位即可。

如果初始是0,现在变成了1,那么实际上我们并不确定,这个操作是xor 1 还是 or 1

因此我们需要两个初始的数,一个所有二进制位上都是0,另一个所有二进制位上都是1.

也就是0和1023

对于某个二进制位

如果初始的 (0,1)变成了 (1,1),那么说明这个位置上的位运算是or

如果初始的 (0,1)变成了(1,0) 那么说明这个位置上的位运算是xor

如果初始的 (0,1)变成了(0,0) 那么说明这个位置上的位运算是and

如果初始的 (0,1)变成了(1,0) 那么说明这个位置上没有进行位运算操作。

 

 

 

 

 

 

 

说点什么

您将是第一位评论人!

提醒
wpDiscuz