ในปัญหานี้ เราได้รับค่าจำนวนเต็มสามค่า 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) และสำหรับแต่ละค่าของผลรวม เราสามารถหาคำตอบของสมการได้
เราจะนับค่าที่ตรงตามค่ารูปแบบเท่ากับ 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