博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces 878A - Short Program(位运算)
阅读量:7010 次
发布时间:2019-06-28

本文共 1011 字,大约阅读时间需要 3 分钟。

 

 

原题链接:

 

题意:给出n个位运算操作, 化简这些操作, 使化简后的操作次数不多于5步。

 

思路:我们可以对二进制每一位上的1, 0, 进行讨论,

如果n次操作后1 -->1, 0 --> 1, 说明这一位要用或操作(or 1)

类似的,1 -->0, 0 -->1, 说明这一位要用异或操作(xor 1)

         1 -->0, 0 -->0, 说明这一位要用与操作(and 0)

              1 -->1, 0 -->0,前后不变,可以不用进行操作。

其中,and 0 操作可以用 or 1 xor 1代替, 那么最后化简后的操作次数不会超过 2 次。

 

AC代码:

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 using namespace std; 8 typedef long long LL; 9 int XOR, OR;10 int p[11];11 int b1,b2;12 char ch[500005];13 int num[500005][11];14 int cal(int b, int j, int i){15 if(ch[j]=='|') return b|num[j][i];16 if(ch[j]=='&') return b&num[j][i];17 else return b^num[j][i];18 }19 int main()20 {21 int n,m;22 p[0]=1;23 for(int i=1;i<11;i++) p[i]=p[i-1]*2;24 while(cin>>n)25 {26 XOR=OR=0;27 memset(num, 0, sizeof(num));28 for(int i=0;i
>=1;35 }36 }37 for(int i=0;i<10;i++){38 b1=1,b2=0;39 for(int j=0;j

 

转载于:https://www.cnblogs.com/MasterSpark/p/7761060.html

你可能感兴趣的文章
NFS文件服务器使用简介
查看>>
linux文件名通配
查看>>
Laravel 5.2 教程 - 数据填充
查看>>
C++11之右值引用(二):右值引用与移动语义
查看>>
win2003活动目录与网络系列(3)
查看>>
Android Open Sources
查看>>
[转]开源究竟差哪了
查看>>
The current branch is not configured for pull No value for key branch.master.merge found in config
查看>>
vmware workstation 共享磁盘创建
查看>>
如何进行项目管理
查看>>
「Python 算法实战」:栈
查看>>
计算1到100的所有整数中9出现的次数
查看>>
linux下配置mysql解析 遇到新问题两个。
查看>>
查看刀片服务器MAC地址方法 zhoulb@dc
查看>>
VI中显示行号
查看>>
把C代码当shell脚本来执行
查看>>
今年的9月,只能怀念
查看>>
Linux 日志
查看>>
我的友情链接
查看>>
【Android】AndroidStudio空指针解决之:listview与adapter的使用报空 java.lang.NullPointerException...
查看>>