Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 주어진 방정식에 대한 해의 수 찾기

<시간/>

이 문제에서 세 개의 정수 값 A, B, C가 주어집니다. 우리의 임무는 주어진 방정식에 대한 해의 수를 찾는 것입니다. .

방정식

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

여기서 Sm(X)는 X의 자릿수의 합입니다.

위의 방정식을 만족하도록 X의 모든 값을 계산해야 합니다. 여기서 X는 1에서 10 사이의 숫자가 될 수 있습니다. 9 .

문제를 이해하기 위해 예를 들어보겠습니다.

입력

A = 3, B = 6, C = 4

출력

3

해결 방법

문제를 해결하는 방법은 X 값의 개수를 세는 것입니다. 이를 위해서는 자릿수의 합이 중요한 역할을 합니다. 최대 자릿수 합은 81입니다(최대값 999999999의 경우). 그리고 sum의 각 값에 대해 방정식의 해를 얻을 수 있습니다.

1부터 81까지 동일한 형태의 값을 만족하는 값을 세게 됩니다.

솔루션 작동을 설명하는 프로그램

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

출력

The number of solutions of the equations is 3