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

โปรแกรม C++ เพื่อนับจำนวนเลขฐานสองขั้นต่ำที่จำเป็นเพื่อเป็นตัวแทนของ n


สมมติว่าเรามีตัวเลข n ตัวเลขจะเป็นทศนิยมฐานสอง หากเป็นจำนวนเต็มบวก และตัวเลขทั้งหมดในสัญกรณ์ทศนิยมเป็น 0 หรือ 1 เช่น 1001 (หนึ่งพันหนึ่ง) เป็นทศนิยมไบนารี ขณะที่ 1021 ไม่ใช่ จากตัวเลข n เราต้องแทน n เป็นผลรวมของทศนิยมไบนารีบางตัว (ไม่จำเป็นต้องแตกต่างกันอย่างชัดเจน) จากนั้นคำนวณจำนวนทศนิยมไบนารีจำนวนน้อยที่สุดที่จำเป็นสำหรับสิ่งนั้น

ดังนั้น หากอินพุตมีค่าเท่ากับ n =121 ผลลัพธ์จะเป็น 2 เพราะสามารถแทนด้วยค่า 110 + 11 หรือ 111 + 10 ได้

ขั้นตอน

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

ans := -1
while n > 0, do:
   ans := maximum of ans and (n mod 10)
   n := n / 10
return ans

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#include <bits/stdc++.h>
using namespace std;

int solve(int n) {
   int ans = -1;
   while (n > 0) {
      ans = max(ans, n % 10);
      n /= 10;
   }
   return ans;
}
int main() {
   int n = 121;
   cout << solve(n) << endl;
}

อินพุต

121

ผลลัพธ์

2