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

การแสดงตัวเลขเป็นผลรวมของ Pseudo-Binary Numbers น้อยที่สุด ใน C++

บทช่วยสอนนี้จะอภิปรายการแสดงตัวเลขเป็นผลรวมของ pseudo-binary numbers น้อยที่สุด Pseudo-binary numbers คือตัวเลขที่ประกอบด้วยเฉพาะหลักเลขฐานสอง คือ 0 และ 1 ตัวอย่างของ pseudo-binary numbers ได้แก่ 00, 11, 10, 100, 111, 1011 ฯลฯ

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

Input : 23
Output : 11 + 11 + 1
คำอธิบาย : 23 = 11 + 11 + 1 ผลรวมของ pseudo-binary numbers (11, 11, 1) คือ 23

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

วิธีการหาคำตอบ

ด้านล่างคือหนึ่งในวิธีที่ดีที่สุดในการหา pseudo-binary numbers น้อยที่สุดเพื่อแสดง N

  • นำตัวเลข X มาและอัปเดตหลักของมันเป็น 1 หรือ 0 ตามหลักของตัวเลข N
  • ตรวจสอบหลักที่แต่ละตำแหน่งของ N
    • ถ้าเป็น 0 ให้อัปเดตตำแหน่งนั้นของ X เป็น 0
    • ถ้าไม่เป็นศูนย์ ให้อัปเดตตำแหน่งนั้นของ X เป็น 1
    • สมมติ N = 32 แล้ว X จะเป็น 11
  • X จะเป็น pseudo-binary number หนึ่งตัว
  • ตอนนี้ลด N ลงด้วย X และทำซ้ำขั้นตอน 1 จนกว่า N จะกลายเป็นศูนย์

ตัวอย่าง

โค้ด C++ สำหรับวิธีข้างต้น

#include<iostream>
using namespace std;

int main(){
    int N = 51;
    // หา pseudo-binary number จนกว่า N จะเป็น 0
    cout << "pseudo-binary representation of " << N << " is: ";
    while (N > 0){
        // หา X ที่ประกอบด้วย 0 และ 1 ตาม N
        int temp = N;
        int X = 0, bit = 1;
        // ตรวจสอบแต่ละตำแหน่งของ N ว่าเป็นศูนย์หรือไม่
        while (temp != 0){
            int last_dig = temp % 10;
            temp = temp / 10;
            if (last_dig != 0)
                X += bit;
            bit *= 10;
        }
        // พิมพ์ pseudo-binary number หนึ่งตัว
        cout << X << " ";
        // อัปเดต N โดยการลบด้วย X
        N = N - X;
    }
    return 0;
}

ผลลัพธ์

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

การเข้าใจโค้ด

  • ลูป while ภายนอกสำหรับรับ N และเลือกหลักที่ทุกตำแหน่งเพื่อหา X
  • เราอัปเดตค่าตัวแปร temp ด้วย N และลูปภายในสำหรับตรวจสอบแต่ละตำแหน่งของตัวแปร temp และอัปเดตตำแหน่งนั้นของตัวแปร X
  • พิมพ์ค่าของ X เพราะนั่นคือ pseudo-binary number หนึ่งตัว
  • เราอัปเดต N โดยการลบด้วย X และไปที่ลูปภายนอกอีกครั้งจนกว่า N จะกลายเป็น 0

สรุป

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