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