Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm các cặp Zeros liên tiếp trong C ++

Chúng ta có một trình tạo trình tự bắt đầu bằng 1. Tại mỗi bước 0 trở thành 10 và 1 trở thành 01. Vì vậy, những thay đổi sau sẽ xảy ra ở các bước liên tiếp -

Bước 1 - 01

Bước 2 - 1001

Bước 3 - 01101001 ……

Mục tiêu là tìm số cặp số 0 liên tiếp cho một số bước nhất định.

Nếu bước đầu vào là 1 cặp 0’s - 0, bước đầu vào là 2 cặp 0’s - 1, bước đầu vào là 3 cặp 0’s 1

Bước 4 - 1001011001101001

Bước 5 - 01101001100101101001011001101001

Chúng ta có thể quan sát thấy chuỗi đang tăng dần theo lũy thừa của 2 và tự lặp lại sau độ dài 12 và cứ sau 12 ký tự. Vì vậy, 12 chuỗi độ dài này có 2 cặp số 0 liên tiếp.

Đối với các bước S, số lượng 12 mẫu độ dài sẽ là 2S / 12

Số lượng 2 mẫu liên tiếp =1 (ban đầu) + 2 X S (cho phần còn lại của 12 lần lặp lại độ dài)

Hãy cho chúng tôi hiểu với các ví dụ.

Đầu vào - bước =5

Đầu ra - Số cặp Zeros liên tiếp là - 5

Giải thích - Như hình trên, trình tự ở bước thứ 5 là -

Step 5: 01101001100101101001011001101001
Number of pairs of 0’s is 5.
Also with formula : tmp=25
/12= 32/12 = 2, pairs=1+ 2 x 2 = 5

Đầu vào - bước =10

Đầu ra - Số lượng các cặp Zeros liên tiếp là - 171

Giải thích - Với công thức - tmp =210/12 =1024/12 =85, cặp =1 + 2 x 85 =171

Cách tiếp cận được sử dụng trong chương trình dưới đây như sau

Chúng tôi sẽ lấy số bước làm đầu vào và kiểm tra nếu bước =1 thì số cặp số 0 liên tiếp là 0. Nếu bước =2 hoặc 3 thì số cặp như vậy là 1.

Nếu không, hãy tính toán bằng công thức tmp =2input / 12 và cặp =1 + 2 * tmp.

  • Lấy một biến số thập phân làm đầu vào cho các bước.

  • Hàm Zero_pairs (int decimal) nhận số thập phân và trả về Số lượng các cặp Zeros liên tiếp cho bước đó.

  • Lấy số lượng ban đầu là 0.

  • Nếu thập phân <=1, trả về 0.

  • Nếu thập phân ==2 hoặc thập phân ==3. Sau đó trả về 1.

  • Khác thì tính temp =(pow (2, decimal)) / 12 và tính số đếm là 2 * temp + 1.

  • Kết quả là số lượt trả lại.

Ví dụ

#include<bits/stdc++.h>
using namespace std;
int Zero_pairs(int decimal){
   int count = 0;
   if(decimal <=1){
      count = 0;
   }
   else if(decimal == 2 || decimal == 3){
      count = 1;
   }
   else{
      int temp = (pow(2, decimal) / 12);
      count = 2 * temp + 1;
   }
   return count;
}
int main(){
   int decimal = 7;
   cout<<"Count of Pairs Of Consecutive Zeros are: "<<Zero_pairs(decimal);
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Count of Pairs Of Consecutive Zeros are: 21