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

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


เรามีตัวสร้างลำดับที่เริ่มต้นด้วย 1 ในแต่ละขั้นตอนที่ 0 กลายเป็น 10 และ 1 กลายเป็น 01 ดังนั้นการเปลี่ยนแปลงต่อไปนี้จะเกิดขึ้นที่ขั้นตอนต่อเนื่องกัน -

ขั้นตอนที่ 1 − 01

ขั้นตอนที่ 2 − 1001

ขั้นตอนที่ 3 − 01101001 ……

เป้าหมายคือการหาจำนวนคู่ของ 0 ที่ต่อเนื่องกันสำหรับจำนวนก้าวที่กำหนด

หากขั้นตอนอินพุตคือ 1 คู่ของ 0 - 0 ขั้นตอนการป้อนคือ 2 คู่ของ 0 - 1 ขั้นตอนการป้อนคือ 3 คู่ของ 0 1

ขั้นตอนที่ 4 − 1001011001101001

ขั้นตอนที่ 5 − 01101001100101101001011001101001

เราสามารถสังเกตได้ว่าลำดับกำลังเพิ่มขึ้นเป็น 2 ยกกำลัง และทำซ้ำตัวเองหลังจากความยาว 12 และทุกๆ 12 อักขระ ดังนั้น ลำดับความยาว 12 ลำดับนี้มี 0 คู่ติดต่อกัน 2 คู่

สำหรับขั้นตอน S จำนวน 12 รูปแบบความยาวจะเป็น 2S /12

จำนวนรูปแบบต่อเนื่องกัน 2 รูปแบบ =1 (เริ่มต้น) + 2 X S ( สำหรับการทำซ้ำความยาวที่เหลือ 12 ครั้ง )

ให้เราเข้าใจด้วยตัวอย่าง

ป้อนข้อมูล − ขั้นตอน =5

ผลผลิต − จำนวนคู่ของศูนย์ติดต่อกันคือ − 5

คำอธิบาย − ดังที่แสดงไว้ข้างต้นในขั้นตอนที่ 5 คือ −

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

ป้อนข้อมูล − ขั้นตอน =10

ผลผลิต − จำนวนคู่ของศูนย์ติดต่อกันคือ − 171

คำอธิบาย − ด้วยสูตร − tmp=210/12=1024/12 =85, pairs=1+ 2 x 85 =171

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

เราจะใช้จำนวนขั้นตอนเป็นอินพุตและตรวจสอบว่าขั้นตอน =1 จำนวนคู่ของ 0 ที่ต่อเนื่องกันคือ 0 หากขั้นตอน =2 หรือ 3 จำนวนของคู่ดังกล่าวคือ 1

มิฉะนั้น ให้คำนวณโดยใช้สูตร tmp=2input/12 และ pairs=1+2*tmp

  • ใช้ทศนิยมตัวแปรเป็นอินพุตสำหรับขั้นตอน

  • ฟังก์ชัน Zero_pairs(int decimal) ใช้จุดทศนิยมและส่งกลับ Count of Pairs Of Consecutive Zeros สำหรับขั้นตอนนั้น

  • นับเริ่มต้นเป็น 0

  • หากเป็นทศนิยม<=1 ให้คืนค่า 0

  • ถ้าทศนิยม==2หรือทศนิยม==3 แล้วคืน 1.

  • อย่างอื่นคำนวณ temp=(pow(2,decimal))/12 และคำนวณนับเป็น 2*temp + 1

  • ผลตอบแทนนับเป็นผลลัพธ์

ตัวอย่าง

#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