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