A. Short Program

link

http://codeforces.com/contest/878/problem/A

describe

Petya learned a new programming language CALPAS. A program in this language always takes one non-negative integer and returns one non-negative integer as well.

In the language, there are only three commands: apply a bitwise operation AND, OR or XOR with a given constant to the current integer. A program can contain an arbitrary sequence of these operations with arbitrary constants from 0 to 1023. When the program is run, all operations are applied (in the given order) to the argument and in the end the result integer is returned.

Petya wrote a program in this language, but it turned out to be too long. Write a program in CALPAS that does the same thing as the Petya's program, and consists of no more than 5 lines. Your program should return the same integer as Petya's program for all arguments from 0 to 1023.

Input

The first line contains an integer n (1 ≤ n ≤ 5·105) — the number of lines.

Next n lines contain commands. A command consists of a character that represents the operation ("&", "|" or "^" for AND, OR or XOR respectively), and the constant xi 0 ≤ xi ≤ 1023.

Output

Output an integer k (0 ≤ k ≤ 5) — the length of your program.

Next k lines must contain commands in the same format as in the input.

Examples

input

3

| 3

^ 2

| 1

output

2

| 3

^ 2

input

3

& 1

& 3

& 5

output

1

& 1

input

3

^ 1

^ 2

^ 3

output

0

Note

You can read about bitwise operations in https://en.wikipedia.org/wiki/Bitwise_operation.

Second sample:

Let x be an input of the Petya's program. It's output is ((x&1)&3)&5 = x&(1&3&5) = x&1. So these two programs always give the same outputs.

翻译

现在有一个程序,输入一个[0,1024)的数,然后经过一些位运算之后,输出一个数。

现在让你简化中间的位运算的过程,使得不超过5步,使得答案和原程序一样。

题解

考虑每一位,只会存在4种情况:

对于输入的数字的每一位而言,要么是1,要么是0。而这些每一位的数输出之后要么变成了0,要么就变成了1.

(1)0->0,1->0

(2)0->1,1->0

(3)0->0,1->1

(4)0->1,1->1

对于四种情况,我们都可以通过^和|就可以解决,分情况讨论输出即可。

代码

#include<bits/stdc++.h>
using namespace std; int n,a,b,p;
string s;
int main(){
cin>>n;
a = 0,b = 1023;
for(int i=0;i<n;i++){
cin>>s>>p;
if(s[0]=='|'){
a|=p;
b|=p;
}else if(s[0]=='^'){
a^=p;
b^=p;
}else{
a&=p;
b&=p;
}
}
int ans1=0,ans2=0;
for(int i=0;i<10;i++){
int a1=a&(1<<i);
int b1=b&(1<<i);
if(a1&&b1){
ans1|=(1<<i);
}
if(a1&&!b1){
ans2|=(1<<i);
}
if(!a1&&!b1){
ans1|=(1<<i);
ans2|=(1<<i);
}
}
cout<<"2"<<endl;
cout<<"| "<<ans1<<endl;
cout<<"^ "<<ans2<<endl;
}

Codeforces Round #443 (Div. 1) A. Short Program的更多相关文章

  1. Codeforces Round #443 (Div. 2) C. Short Program

    C. Short Program time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  2. Codeforces Round #443 (Div. 2) C: Short Program - 位运算

    传送门 题目大意: 输入给出一串位运算,输出一个步数小于等于5的方案,正确即可,不唯一. 题目分析: 英文题的理解真的是各种误差,从头到尾都以为解是唯一的. 根据位运算的性质可以知道: 一连串的位运算 ...

  3. Codeforces Round #879 (Div. 2) C. Short Program

    题目链接:http://codeforces.com/contest/879/problem/C C. Short Program time limit per test2 seconds memor ...

  4. Codeforces Round #443 (Div. 2) 【A、B、C、D】

    Codeforces Round #443 (Div. 2) codeforces 879 A. Borya's Diagnosis[水题] #include<cstdio> #inclu ...

  5. Codeforces Round #443 (Div. 2)

    C. Short Program Petya learned a new programming language CALPAS. A program in this language always ...

  6. Codeforces Round #443 (Div. 2) C 位运算

    C. Short Program time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  7. 【Codeforces Round #443 (Div. 2) C】Short Program

    [链接] 我是链接,点我呀:) [题意] 给你一个n行的只和位运算有关的程序. 让你写一个不超过5行的等价程序. 使得对于每个输入,它们的输出都是一样的. [题解] 先假设x=1023,y=0; 即每 ...

  8. Codeforces Round #174 (Div. 1) B. Cow Program(dp + 记忆化)

    题目链接:http://codeforces.com/contest/283/problem/B 思路: dp[now][flag]表示现在在位置now,flag表示是接下来要做的步骤,然后根据题意记 ...

  9. Codeforces Round #443 Div. 1

    A:考虑每一位的改变情况,分为强制变为1.强制变为0.不变.反转四种,得到这个之后and一发or一发xor一发就行了. #include<iostream> #include<cst ...

随机推荐

  1. 使用docker方式安装etcd集群,带TLS证书

    网上文档也多,安装的时候,还是踩了几个坑. 现在作一个安装记录吧. 1,先作自签名的证书ca-csr.json(为了和k8s共用根证书,可能将信息调为k8s). { "CN": & ...

  2. css3三角形冒泡泡图形制作

    图一: 图二: <!DOCTYPE html> <html> <head> <title>css 三角形</title> <style ...

  3. NEST 中的距离单位

    Distance units Version: 5.x 英文原文地址:Distance units 当我们需要指定距离时(地理位置查询),可以使用一个双精度的数字来表示,它的默认单位是米(meters ...

  4. Visio制图之垮职能流程图

    Visio制图中常用的一种就是带有不同职能,不同阶段的流程关系图. 下面是根据实际生产情况制作的一张“软件生产流程关系图”,供参考.

  5. 关于input type=file上传图片的总结

    最近比较忙,现在来整理一下近期的成果,方便以后再次使用. 关于图片上传的js 和jq jq $("input").change(function () { var $file = ...

  6. jquery对form表单复杂(多个)条件的判断验证

    //按钮先执行验证再提交表 $(document).ready(function(){ // 点击查看图片 $('.nyroModal').nyroModal(); //按钮先执行验证再提交表单 $( ...

  7. xml方式将dataset导出excel

    using System;using System.Collections;using System.Collections.Generic;using System.Data;using Syste ...

  8. 基于PySpark的网络服务异常检测系统 阶段总结(二)

    在上篇博文中介绍了网络服务异常检测的大概,本篇将详细介绍SVDD和Isolation Forest这两种算法 1. SVDD算法 SVDD的英文全称是Support Vector Data Descr ...

  9. instance of的java用法

    http://blog.csdn.net/liranke/article/details/5574791

  10. 9、Qt Project之简单的数据库接口

    简单的数据库接口  Step1:首先完成整个UI界面的额设计: <?xml version="1.0" encoding="UTF-8"?> < ...