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

แสดงตัวเลขเป็นผลรวมของตัวเลขไบนารีเทียมขั้นต่ำที่เป็นไปได้ใน C ++


บทช่วยสอนนี้จะกล่าวถึงการแสดงตัวเลขเป็นผลรวมของตัวเลขฐานสองเทียมขั้นต่ำ เลขฐานสองเทียมคือตัวเลขที่ประกอบด้วยเลขฐานสองเท่านั้น กล่าวคือ 0 และ 1 ตัวอย่างของเลขฐานสองเทียม ได้แก่ 00, 11, 10, 100, 111, 1011 เป็นต้น

ด้านล่างนี้คือตัวอย่างตัวเลขที่แสดงเป็นผลรวมของตัวเลขฐานสองเทียม

Input : 23
Output : 11 + 11 + 1
Explanation : 23 = 11 + 11 + 1, sum of pseudo-binary numbers(11, 11, 1) is 23.

Input : 50
Output : 10 + 10 + 10 + 10 + 10

แนวทางในการหาแนวทางแก้ไข

ด้านล่างนี้เป็นหนึ่งในวิธีที่ดีที่สุดในการหาเลขฐานสองเทียมขั้นต่ำเพื่อแทน N

  • นำตัวเลข X และอัปเดตหลักเป็น 1 หรือ 0 ตามหลักตัวเลข N

  • ตรวจเลข N ทุกตำแหน่ง

    • หากเป็น 0 ให้อัปเดตตำแหน่งของ X เป็น 0

    • หากไม่ใช่ศูนย์ ให้อัปเดตตำแหน่งของ X เป็น 1

    • สมมุติว่า N =32 แล้ว X จะเป็น 11

  • จากนั้น X จะเป็นเลขฐานสองเทียมหนึ่งตัว

  • ตอนนี้ลด N ด้วย X และทำซ้ำขั้นตอนที่ 1 จนกระทั่ง N กลายเป็นศูนย์

ตัวอย่าง

รหัส C++ สำหรับแนวทางข้างต้น

#include<iostream>
using namespace std;
int main(){
   int N = 51;
   // find a pseudo-binary number until N becomes 0.
   cout << "pseudo-binary representation of " << N << " is: ";
   while (N > 0){                
      // finding X which contains 0's and 1's according to N.
      int temp = N;
      int X = 0, bit = 1;
      // checking each place of N for zero or non-zero.
      while (temp!=0){
      int last_dig = temp % 10;
      temp = temp / 10;
      if (last_dig != 0)
         X += bit;
         bit *= 10;
      }
      // printing one pseudo-binary number.
      cout << X << " ";
      // Updating N by subtracting with X.
      N = N - X;
       
   }
   return 0;
}

ผลลัพธ์

pseudo-binary representation of 51 is: 11 10 10 10 10

ทำความเข้าใจรหัส

  • วงแหวนรอบนอกสำหรับการรับ N และการเลือกหลักในทุกตำแหน่งเพื่อค้นหา X

  • เรากำลังอัปเดตค่าของตัวแปร temp ด้วย N และ Inner loop เพื่อตรวจสอบแต่ละตำแหน่งของตัวแปร temp และอัปเดตตำแหน่งของตัวแปร X

  • การพิมพ์ค่า X เนื่องจากเป็นเลขฐานสองเทียมหนึ่งตัว

  • เราอัปเดต N โดยลบด้วย X แล้วไปที่ลูปด้านนอกอีกครั้งจนกระทั่ง N กลายเป็น 0

บทสรุป

ในบทช่วยสอนนี้ เราได้พูดถึงวิธีที่เราสามารถแสดงตัวเลขเป็นผลรวมของตัวเลขไบนารีเทียมขั้นต่ำที่เป็นไปได้ เราได้พูดคุยถึงแนวทางในการหาเลขฐานสองเทียมทั้งหมด เรายังพูดถึงโค้ด C++ สำหรับโค้ดเดียวกัน ซึ่งเราสามารถเขียนในภาษาการเขียนโปรแกรมอื่นๆ เช่น C, Java, Python เป็นต้น เราหวังว่าคุณจะพบว่าบทช่วยสอนนี้มีประโยชน์