สมมติว่าเรามีตัวเลข 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