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