이 문제에서 세 개의 정수 값 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