กำหนดตัวแปรจำนวนเต็ม Number เป็นอินพุต ให้เราพิจารณาอาร์เรย์ที่มีองค์ประกอบในช่วง 1 ถึง Number ตามลำดับ หากเราดำเนินการกับอาร์เรย์ดังกล่าวในแต่ละขั้นตอน องค์ประกอบในตำแหน่งคี่จะถูกลบออก จากนั้นเป้าหมายคือการดำเนินการนี้ จำนวนครั้งจนเหลือเพียงองค์ประกอบเดียว พิมพ์องค์ประกอบนั้นในตอนท้าย
หมายเหตุ-:การวางตำแหน่งขององค์ประกอบทำให้อาร์เรย์ที่ดัชนี 0 อยู่ที่ตำแหน่งที่ 1 เป็นต้น
กรณีทดสอบสำหรับจำนวนองค์ประกอบในอาร์เรย์
อินพุตตัวเลข=1,เอาต์พุต=1
อินพุตตัวเลข=2,เอาต์พุต=2
อินพุตตัวเลข=3,เอาต์พุต=2
อินพุตตัวเลข=4,เอาต์พุต=4
อินพุตตัวเลข=5,เอาต์พุต=4
หมายเลขอินพุต=6, เอาต์พุต =4
อินพุตตัวเลข=7,เอาต์พุต=4
......
อินพุตตัวเลข=12,เอาต์พุต=8
หมายเลขอินพุต=20,เอาต์พุต=16
จากการสังเกตข้างต้น สำหรับช่วงของตัวเลขระหว่าง 2 i ถึง 2 i+1 -1 เอาต์พุตจะเป็น 2 i .
ตัวอย่าง
ป้อนข้อมูล −Number=7
ผลผลิต − องค์ประกอบเดี่ยวหลังการดำเนินการลดคือ :4
คำอธิบาย − องค์ประกอบแรกอยู่ที่ตำแหน่ง 1 เป็นต้น
อาร์เรย์จะเป็น [ 1 2 3 4 5 6 7 ]
หลังปฏิบัติการครั้งที่ 1:[ 2 4 6 ]
หลังการผ่าตัดครั้งที่ 2:[ 4 ]
ป้อนข้อมูล − Number=18
ผลผลิต − องค์ประกอบเดี่ยวหลังการดำเนินการลดคือ :4
คำอธิบาย − องค์ประกอบแรกอยู่ที่ตำแหน่ง 1 เป็นต้น
อาร์เรย์จะเป็น [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ]
หลังปฏิบัติการครั้งที่ 1:[ 2 4 6 8 10 12 14 16 18]
หลังการผ่าตัดครั้งที่ 2:[ 2 8 12 16 ]
หลังปฏิบัติการครั้งที่ 3:[ 8 16 ]
หลังการผ่าตัดครั้งที่ 4 [ 16 ]
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
ในแนวทางนี้ เราจะใช้ while loop ในการคำนวณผลลัพธ์สุดท้ายตามสูตรข้างต้น ใช้ค่าเริ่มต้นเป็น 2 และข้ามจนถึง 2*ผลลัพธ์ <=จำนวนอินพุตและเพิ่มค่าเป็นสองเท่าในการวนซ้ำแต่ละครั้ง
-
รับตัวแปรอินพุต Number
-
ฟังก์ชัน getsingleElement(long num) รับหมายเลขอินพุตและพิมพ์ผลลัพธ์ตามสูตรด้านบน
-
ใช้ผลลัพธ์ตัวแปร
-
เริ่มต้นผลลัพธ์ด้วย 2.
-
สำรวจโดยใช้ while วนซ้ำจนถึงผลลัพธ์*2<=num.
-
ผลลัพธ์สองเท่าภายในพินัยกรรม
-
ทันทีที่วง while สิ้นสุด เราก็จะได้ค่าที่ต้องการ
-
ส่งคืนผลลัพธ์
-
พิมพ์ผลลัพธ์ภายใน main.
ตัวอย่าง
#include<bits/stdc++.h> using namespace std; long getsingleElement(long num){ long result; result=2; while(result*2 <= num){ result=result*2; } return result; } int main(){ int Number = 20; cout<<"The single element after reduction operation is : "<<getsingleElement(Number) ; return 0; }
ผลลัพธ์
หากเรารันโค้ดด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้
The single element after reduction operation is : 16