เรามีตัวสร้างลำดับที่เริ่มต้นด้วย 1 ที่แต่ละขั้นตอน 0 จะกลายเป็น 10 และ 1 จะกลายเป็น 01 ดังนั้นการเปลี่ยนแปลงต่อไปจะเกิดขึ้นในขั้นตอนติดต่อกัน −
ขั้นตอน 1 − 01
ขั้นตอน 2 − 1001
ขั้นตอน 3 − 01101001 …
เป้าหมายคือหาจำนวนคู่ของศูนย์ติดต่อกันสำหรับจำนวนขั้นตอนที่กำหนด
ถ้าอินพุตขั้นตอนคือ 1 คู่ของ 0 - 0, ขั้นตอน 2 คู่ของ 0 - 1, ขั้นตอน 3 คู่ของ 0 - 1
ขั้นตอน 4 − 1001011001101001
ขั้นตอน 5 − 01101001100101101001011001101001
เราสังเกตได้ว่าลำดับเพิ่มขึ้นเป็นกำลังของ 2 และซ้ำตัวเองหลังความยาว 12 และสำหรับทุก 12 ตัวอักษร ลำดับ 12 ตัวอักษรเหล่านี้มี 2 คู่ของศูนย์ติดต่อกัน
สำหรับขั้นตอน S จำนวนรูปแบบความยาว 12 จะเป็น 2^S / 12
จำนวนรูปแบบคู่ติดต่อกัน 2 = 1 (เริ่มต้น) + 2 x S (สำหรับการซ้ำของความยาว 12 ที่เหลือ)
มาดูตัวอย่าง
อินพุต − steps = 5
เอาต์พุต − จำนวนคู่ศูนย์ติดต่อกัน คือ 5
คำอธิบาย − ตามที่แสดงข้างต้น ลำดับที่ขั้นตอนที่ 5 คือ −
Step 5: 01101001100101101001011001101001 จำนวนคู่ของ 0 คือ 5 ด้วยสูตร: tmp=2^5 /12= 32/12 = 2, pairs=1+ 2 x 2 = 5
อินพุต − steps = 10
เอาต์พุต − จำนวนคู่ศูนย์ติดต่อกัน คือ 171
คำอธิบาย − ด้วยสูตร − tmp=2^10/12= 1024/12 = 85, pairs=1+ 2 x 85 = 171
แนวทางที่ใช้ในโปรแกรม
เราจะรับจำนวนขั้นตอนเป็นอินพุต และตรวจสอบถ้า steps=1 จำนวนคู่ศูนย์ติดต่อกันคือ 0 ถ้า steps = 2 หรือ 3 จำนวนคู่ดังกล่าวคือ 1
มิฉะนั้น คำนวณด้วยสูตร tmp=2^input/12 และ pairs=1+2*tmp
- รับตัวแปร
decimalเป็นอินพุตสำหรับขั้นตอน - ฟังก์ชัน
Zero_pairs(int decimal)รับdecimalคืนจำนวนคู่ศูนย์ติดต่อกันสำหรับขั้นตอนนั้น - กำหนด
countเริ่มต้น 0 - ถ้า
decimal<=1คืน 0 - ถ้า
decimal==2หรือdecimal==3คืน 1 - มิฉะนั้น คำนวณ
temp=(pow(2,decimal))/12และคำนวณcount = 2*temp + 1 - คืน
count
ตัวอย่างโค้ด C++
#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;
}
เอาต์พุต
หากรันโค้ดด้านบนจะได้ผลลัพธ์ดังนี้ −
Count of Pairs Of Consecutive Zeros are: 21