Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับคู่ศูนย์ติดต่อกันใน C++


เรามีตัวสร้างลำดับที่เริ่มต้นด้วย 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