【luogu题解】T378828 位运算
生活随笔
收集整理的這篇文章主要介紹了
【luogu题解】T378828 位运算
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
位運(yùn)算
題目背景
題目由 daiyulong20120222 創(chuàng)作(me)
并由
QBW1117完善以及數(shù)據(jù) 。
題目描述
給定兩個(gè)數(shù)\(x,y\) ,在給定一個(gè)位運(yùn)算符號(hào) \(c\)。
請(qǐng)你列出 \(x,y\) 進(jìn)行 \(c\) 位運(yùn)算是的算數(shù)豎式式。
注:
-
豎式這么列:
-
顯示出兩個(gè)數(shù)的完整二進(jìn)制,包括前導(dǎo)零。
-
32個(gè) '-'。
-
顯示出 \(ans\) ,包括前導(dǎo)零。
-
-
位運(yùn)算符號(hào)可能是:
-
&
-
|
-
^
-
輸入格式
三個(gè)整數(shù)\(x,y,c\)同題意
輸出格式
豎式結(jié)果
樣例 #1
樣例輸入 #1
32 21 &
樣例輸出 #1
00000000000000000000000000100000
00000000000000000000000000010101
--------------------------------
00000000000000000000000000000000
題解
做這道題有3種方法。
方法一:進(jìn)制轉(zhuǎn)換(字符串)
這種方法在此不做過(guò)多的贅述,有興趣的同學(xué)可以翻看一些luogu進(jìn)制轉(zhuǎn)換的題解。
不過(guò)真的是太簡(jiǎn)單啦!
方法二:位運(yùn)算&狀態(tài)壓縮
這種方法也在此不做過(guò)多的贅述。
不過(guò)也真的是太簡(jiǎn)單啦!
·····方法三:bitset庫(kù)函數(shù)
在C++中:有一個(gè)庫(kù)函數(shù) bitset
頭文件:#include<bitset>
詳見(jiàn)請(qǐng)查看此鏈接
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;
}
總結(jié)
以上是生活随笔為你收集整理的【luogu题解】T378828 位运算的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python 潮流周刊#28:两种线程池
- 下一篇: C/C++ 常用加密与解密算法