d326 - 程式設計師的面試問題(二)
題目描述
題目要求實現一個程式,能夠根據輸入的整數 v、位元位置 x 和設定值 y (0 或 1),將 v 的第 x 位設定為 y,並將結果以 32 位二進位字串的形式輸出。
解題思路
程式碼直接使用位元運算來解決問題。首先,將輸入的整數 v 轉換為一個布林陣列 a,其中 a[i] 表示 v 的第 i 位是 0 還是 1。然後,根據輸入的 x 和 y,將 a[x] 設定為 y。最後,將布林陣列 a 轉換回整數,並以 32 位二進位字串的形式輸出。
複雜度分析
- 時間複雜度: O(1)
- 空間複雜度: O(1)
程式碼
#include <iostream>
using namespace std;
bool a[32];
int v,x,y;
int main(){
while(cin >> v >> x >> y){
for(int i=0;i<32;++i){
a[i]=v&1;
v>>=1;
}
a[x]=y;
for(int i=31;i>=0;--i)
cout << a[i];
cout << "\n";
}
}