• Codeforces Round #443 (Div. 1) A. Short Program


    代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int N = 500000 + 50;
     4 int n, a[12][2], b[N];
     5 int ans[3];/* & ^ |    */
     6 char op[N][2];
     7 int main(){
     8     scanf("%d", &n);
     9     for (int i = 1; i <= n; ++i) scanf("%s%d", op[i] + 1, &b[i]);
    10     for (int j = 1; j <= 10; ++j){
    11         a[j][0] = 0; a[j][1] = 1;
    12         for (int i = 1; i <= n; ++i){
    13             int x = ((b[i] >> (j - 1))&1);
    14         //    cout << j << ": " << x << endl;
    15             if (op[i][1] == '&'){
    16                 a[j][0] &= x;
    17                 a[j][1] &= x;
    18             }
    19             if (op[i][1]== '|'){
    20                 a[j][0] |= x;
    21                 a[j][1] |= x;
    22             }
    23             if (op[i][1] == '^'){
    24                 a[j][0] ^= x;
    25                 a[j][1] ^= x;
    26             }            
    27         }
    28     //    cout << j <<" " << a[j][0] << " " << a[j][1] << endl;
    29         if (a[j][0] == 0 && a[j][1] == 0){
    30             continue;
    31         }else if (a[j][0] == 0 && a[j][1] == 1){
    32             ans[0] |= (1 << (j - 1));
    33         }else if (a[j][0] == 1 && a[j][1] == 0){
    34             ans[0] |= (1 << (j - 1));
    35             ans[1] |= (1 << (j - 1));
    36         }else if (a[j][0] == 1 && a[j][1] == 1){
    37             ans[2] |= (1 << (j - 1));
    38         }
    39     }
    40     cout << 3 << endl;
    41     cout << "& " << ans[0] << endl;
    42     cout << "^ " << ans[1] << endl;
    43     cout << "| " << ans[2] << endl;
    44     return 0;
    45 }
    A题

    题目链接:http://codeforces.com/problemset/problem/878/A

    题目大意

    给出一大串位运算(or,and,xor), 称这组运算的集合位一个程序, 那么对于任意一个输入这个程序的数经过一系列位运算后,得到的数是一定的.现在要求你给出不超过5行位运算, 使得输入程序的数字在经过你这5行位运算后得到的数字与程序得到的数字一样.

    题解

    显然可以枚举每个二进制位, 然后暴力构建3行位运算(and,or,xor), 用人类智慧得出这一位上的值,然后连在一起输出即可.

  • 相关阅读:
    MVC小系列(十五)【MVC+ZTree实现对树的CURD及拖拽操作】
    WCF身份验证之用户名密码认证
    sql 优化建议
    Redis key 设计技巧
    Redis配置文件详解
    Nlog配置文件
    Windown安装Mysql安装图解
    CentOS 7 命令备忘录
    WPF自定义ListBox样式
    WPF自定义圆形按钮样式资源文件
  • 原文地址:https://www.cnblogs.com/juruohx/p/7745399.html
Copyright © 2020-2023  润新知