列印生成形式為 2^X – 1 的數字的 C 語言程式步驟。
給定一個數字 n,我們需要透過使用異或運算,列印生成形式為 2^X-1 的數字的步驟。
- 我們應該在奇數步驟將該數字與任何數字**2^M-1**異或,其中**M**由你選擇。
- 在偶數步驟遞增數字 1
繼續執行該步驟,直到 n 變成 2^X-1,並打印出所有步驟
示例
Input: 22 Output: Step 1 : Xor with 15 Step 2: Increase by 1 Step 3 : Xor with 7 Step 4: Increase by 1 Step 5 : Xor with 1 Input:7 Output: No Steps to be performed
演算法
int find_leftmost_unsetbit(int n) START STEP 1 : DECLARE AND ASSIGN ind = -1, i = 1 STEP 2 : LOOP WHILE n IF !(n & 1) THEN, ASSIGN ind WITH i END IF INCREMENT i BY 1 LEFT SHIFT n BY 1 END WHILe STEP 3 : RETURN ind STOP void perform_steps(int n) START STEP 1 : DECLARE AND ASSIGN left = find_leftmost_unsetbit(n) STEP 2 : IF left == -1 THEN, PRINT "No Steps to be performed" RETURN END IF STEP 3 : DECLARE AND ASSIGN step = 1 STEP 4 : LOOP WHILE find_leftmost_unsetbit(n) != -1 IF step % 2 == 0 THEN, INCREMENT n BY 1 PRINT "Step n : Increase by 1
" ELSE DECLARE AND ASSIGN m = find_leftmost_unsetbit(n) AND SET num = (pow(2, m) - 1) SET n = n ^ num PRINT "Step N : Xor with Num END IF INCREMENT step BY 1 END LOOP STOP
示例
#include <stdio.h>
#include <math.h>
//To find the leftmost bit
int find_leftmost_unsetbit(int n){
int ind = -1;
int i = 1;
while (n) {
if (!(n & 1))
ind = i;
i++;
n >>= 1;
}
return ind;
}
void perform_steps(int n){
// Find the leftmost unset bit
int left = find_leftmost_unsetbit(n);
//If there is no bit
if (left == -1) {
printf("No Steps to be performed
");
return;
}
// To count the number of steps
int step = 1;
// Iterate till number is in form of 2^x - 1
while (find_leftmost_unsetbit(n) != -1) {
// if the step is even then increase by 1
if (step % 2 == 0) {
n += 1;
printf("Step %d: Increase by 1
", step);
}
// if the step is odd then xor with 2^m-1
else {
// Finding the leftmost unset bit
int m = find_leftmost_unsetbit(n);
int num = (int)(pow(2, m) - 1);
n = n ^ num;
printf("Step %d : Xor with %d
", step, num);
}
// To increase the steps
step += 1;
}
}
int main(){
int n = 22;
perform_steps(n);
return 0;
}輸出
如果我們執行以上程式,它將生成以下輸出 −
Step 1 : Xor with 15 Step 2 : Increase by 1 Step 3 : Xor with 7 Step 4 : Increase by 1 Step 5 : Xor with 1
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP