ในปัญหานี้ เราได้รับค่าจำนวนเต็มสามค่า 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