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) และสำหรับแต่ละค่าของผลรวม เราสามารถหาคำตอบของสมการได้

เราจะนับค่าที่ตรงตามค่ารูปแบบเท่ากับ 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