首页 > 其他分享 >【luogu题解】T378828 位运算

【luogu题解】T378828 位运算

时间:2023-11-26 12:12:30浏览次数:50  
标签:binaryY 运算 题解 T378828 bitset luogu op result

位运算

题目背景

题目由 daiyulong20120222 创作(me)

并由
QBW1117完善以及数据 。

题目描述

给定两个数\(x,y\) ,在给定一个位运算符号 \(c\)。

请你列出 \(x,y\) 进行 \(c\) 位运算是的算数竖式式。

注:

  1. 竖式这么列:

    • 显示出两个数的完整二进制,包括前导零。

    • 32个 '-'。

    • 显示出 \(ans\) ,包括前导零。

  2. 位运算符号可能是:

    • &

    • |

    • ^

输入格式

三个整数\(x,y,c\)同题意

输出格式

竖式结果

样例 #1

样例输入 #1

32 21 &

样例输出 #1

00000000000000000000000000100000
00000000000000000000000000010101
--------------------------------
00000000000000000000000000000000

题解

做这道题有3种方法。

方法一:进制转换(字符串)

这种方法在此不做过多的赘述,有兴趣的同学可以翻看一些luogu进制转换的题解。

不过真的是太简单啦!

方法二:位运算&状态压缩

这种方法也在此不做过多的赘述。

不过也真的是太简单啦!

·····方法三:bitset库函数

在C++中:有一个库函数 bitset

头文件:#include<bitset>

详见请查看此链接

AC code

#include <iostream>
#include <bitset>

using namespace std;

string performBitOperation(int x, int y, char op) {
    bitset<32> binaryX(x);
    bitset<32> binaryY(y);
    bitset<32> result;

    switch (op) {
        case '&':
            result = binaryX & binaryY;
            break;
        case '|':
            result = binaryX | binaryY;
            break;
        case '^':
            result = binaryX ^ binaryY;
            break;
        default:
            cout << "Invalid operator!" << endl;
            return "";
    }

    string binaryXStr = binaryX.to_string();
    string binaryYStr = binaryY.to_string();
    string resultStr = result.to_string();

    string separator(32, '-');

    string output = binaryXStr + "\n" + binaryYStr + "\n" + separator + "\n" + resultStr;

    return output;
}

int main() {
    int x, y;
    char op;

    cin >> x >> y >> op;

    string result = performBitOperation(x, y, op);
    cout << result << endl;

    return 0;
}

标签:binaryY,运算,题解,T378828,bitset,luogu,op,result
From: https://www.cnblogs.com/daiyulong/p/tijie-luogu-t378828.html

相关文章

  • T402161 run 题解
    LinkT402161runQuestion亮亮总共要跑\(n\)圈,可以分成多次,但是每次跑的圈数必须要比上一次跑的多,求跑完\(n\)圈的方案数Solution显然动态规划定义\(F[i][j]\)表示一共跑了\(i\)圈,最后一次跑了\(j\)圈的方案数,转移方程就为\[F[i][j]=\sum\limits_{k=1}^{j-1}F[i......
  • P1091 合唱队形题解(普及/提高−) 题解
    题目传送门这道题是一个很经典的动态规划。因为合唱队形的身高是从低——高——低来排的,所以就可以利用分治的思想将队形分成两个部分:低——高是最长上升子序列;高——低是最长下降子序列。这道题其实可以用二分查找来优化,可是这题n≤100,没有必要优化,需优化题详见P1020导弹拦截......
  • P3370 【模板】字符串哈希(普及−) 题解
    题目链接题目大意如题,给定\(N\)个字符串(第\(i\)个字符串长度为\(M_i\),字符串内包含数字、大小写字母,大小写敏感),请求出\(N\)个字符串中共有多少个不同的字符串。不知道大家知不知道一个字符串函数,叫\(insert\)他是\(STL\)库中的一个函数,作用是将两个字符串拼接起来,我......
  • P5867 [SEERC2018] Fishermen(暂无评定) 题解
    题意有\(n\)条鱼,\(m\)个渔夫,且这\(m\)个渔夫都在横坐标轴上,每个渔夫都有一个长度为\(l\)的鱼竿,当鱼和渔夫距离小于或等于\(l\)时,鱼能被钓到。并且渔夫\((x,0)\)与鱼\((a,b)\)的距离(假设为\(L\))满足如下公式\(|a−x|+b\)式子中\(x\)为渔夫的横坐标,\((a,b)......
  • AT_pakencamp_2020_day1_f Fibonaccyan(暂无评定) 题解
    题目链接题目大意:给定数\(P\),寻找能把\(P\)整除的最小的斐波那契数,然后输出它是斐波那契数列中的第几个,找不到输出的话就输出-1。分析:主要代码:a[i]=(a[i-1]+a[i-2])%p思路:先将\(a\)数组的第一项和第二项都初始化为1,然后判断是不是能整除\(p\)就行了Code:#incl......
  • P1029 最大公约数和最小公倍数问题(普及−) 题解
    题目传送门想要做这题,我们要先了解一下最大公约数。最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。求最大公约数有多种方法,常见的有质因数分解法、短......
  • Win10无法访问linux上的samba服务问题解决
    转自https://blog.csdn.net/u014635079/article/details/124703840服务端:Ubuntu20.04, samba版本4.13.17-Ubuntu客户端:Win10 问题1:按照教程搭建好samba服务之后,从windows可以ping通linux的情况下,从windows端无法连接samba服务器。 解决:通过打开Lanman工作站的启用不......
  • P8543 「Wdoi-2」纯粹的复仇女神 题解
    自己的套路还是见少了。思路考虑扫描线。每一个颜色的\(\min\)具有单调性,这个很好看出来。可以使用一个单调栈来维护。这里都是朴素的。考虑如何维护。我们发现在通过单调栈维护的时候。需要支持撤销上一个元素对区间的影响。我就在这里卡了很久。我们有一个很暴力的......
  • 14:苏格拉底问答、实践过程截图、遇到问题解决问题截图,代码链接、
    ......
  • 苏格拉底问答、实践过程截图、遇到问题解决问题截图,代码链接
    include<stdio.h>include<stdlib.h>include<sys/types.h>include<sys/socket.h>include<netinet/in.h>include<arpa/inet.h>include<time.h>include<string.h>include<unistd.h>defineMAXLINE256......