Computer >> Máy Tính >  >> Lập trình >> C ++

Tổng các chữ số của số N được viết trong tất cả các cơ số từ 2 đến N / 2 trong C ++


Trong bài toán này, chúng ta được cho một số N. Nhiệm vụ của chúng ta là tạo một chương trình để tìm tổng các chữ số của số N trong các cơ số từ 2 đến N / 2.

Vì vậy, chúng ta phải chuyển đổi cơ số của tất cả các cơ số từ 2 sang N / 2, tức là với n =9, các cơ số sẽ là 2, 3, 4. Và tìm tổng của tất cả các chữ số trong các cơ số này.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

N = 5

Đầu ra

2

Giải thích

base from 2 to N/2 is 2.
52 = 101, sum of digits is 2.

Để giải quyết vấn đề này, chúng ta lấy mọi số từ 2 đến N / 2 làm cơ số. Và sau đó để tính tổng các chữ số, chúng ta sẽ lặp lại chia số N cho cơ số tức là N =N / cơ số, và cộng giá trị phần dư vào tổng. Và sau đó cộng các giá trị tổng được tìm thấy cho mỗi cơ sở để nhận được kết quả.

Ví dụ

Chương trình minh họa hoạt động của giải pháp của chúng tôi -

#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;
}

Đầu ra

The sum of digits of 11 written in all bases from 2 to 5 is 14