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

ผลรวมของตัวเลข N ที่เขียนในฐานทั้งหมดตั้งแต่ 2 ถึง N/2 ใน C++


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