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

Tìm số nghiệm của phương trình đã cho trong C ++

Trong bài toán này, chúng ta được cho ba giá trị nguyên A, B, C. Nhiệm vụ của chúng ta là tìm số nghiệm của phương trình đã cho .

Phương trình

X = B*Sm(X)^A + C

trong đó Sm (X) là tổng các chữ số của X.

Chúng ta cần đếm tất cả các giá trị của X sao cho nó thỏa mãn phương trình trên, trong đó X có thể là bất kỳ số nào trong khoảng từ 1 đến 10 9 .

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

Đầu vào

A = 3, B = 6, C = 4

Đầu ra

3

Phương pháp tiếp cận giải pháp

Một giải pháp để giải quyết vấn đề là đếm số giá trị của X. Đối với điều này, tổng các chữ số đóng một vai trò quan trọng. Tổng chữ số lớn nhất là 81 (cho giá trị lớn nhất 999999999). Và với mỗi giá trị của tổng, chúng ta có thể nhận được một nghiệm cho phương trình.

Chúng tôi sẽ đếm các giá trị thỏa mãn giá trị dạng bằng 1 đến 81.

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 <bits/stdc++.h>
using namespace std;
int countSolutions(int a, int b, int c){
   int solutionCount = 0;
   for (int digSum = 1; digSum <= 81; digSum++) {
      int solVal = b * pow(digSum, a) + c;
      int temp = solVal;
      int sum = 0;
      while (temp) {
         sum += temp % 10;
         temp /= 10;
      }
      if (sum == digSum && solVal < 1e9)
         solutionCount++;
   }
   return solutionCount;
}
int main(){
   int a = 3, b = 6, c = 4;
   cout<<"The number of solutions of the equations is "<<countSolutions(a, b, c);
   return 0;
}

Đầu ra

The number of solutions of the equations is 3