ในปัญหานี้ เราได้รับตัวเลข N หน้าที่ของเราคือสร้างโปรแกรมเพื่อหาผลรวมของตัวเลข N ในฐานจาก 2 ถึง N/2
ดังนั้น เราต้องแปลงฐานของตัวเลขเป็นฐานทั้งหมดจาก 2 เป็น N/2 เช่น สำหรับ n =9 ฐานจะเป็น 2, 3, 4 และหาผลรวมของตัวเลขทั้งหมดในฐานเหล่านี้
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ป้อนข้อมูล
N = 5
ผลผลิต
2
คำอธิบาย
base from 2 to N/2 is 2. 52 = 101, sum of digits is 2.
ในการแก้ปัญหานี้ เรานำทุกจำนวนตั้งแต่ 2 ถึง N/2 เป็นฐาน จากนั้นในการคำนวณผลรวมของตัวเลข เราจะหาร N ซ้ำๆ ด้วยฐาน นั่นคือ N =N/ฐาน แล้วบวกค่าที่เหลือเข้ากับผลรวม แล้วบวกค่าผลรวมที่พบสำหรับแต่ละฐานเพื่อให้ได้ผลลัพธ์
ตัวอย่าง
โปรแกรมแสดงการทำงานของโซลูชันของเรา −
#include <iostream> using namespace std; int findBaseSum(int n, int base, int &sum){ while (n > 0) { sum += n % base; n /= base; } return sum; } void CalcSumOfBaseDigits(int n, int &sum){ for (int base = 2; base <= n / 2; base++) findBaseSum(n, base, sum); } int main(){ int N = 11; int sum = 0; CalcSumOfBaseDigits(N, sum); cout<<"The sum of digits of "<<N<<" written in all bases from 2 to "<<(N/2)<<" is "<<sum; return 0; }
ผลลัพธ์
The sum of digits of 11 written in all bases from 2 to 5 is 14