ในปัญหานี้ เราได้รับตัวเลข 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