📜  查找给定方程的解数

📅  最后修改于: 2021-04-23 21:16:10             🧑  作者: Mango

给定三个整数ABC ,任务是找到X的值的计数,以便满足以下条件,
X = B * Sm(X) A + C其中Sm(X)表示X的数字总和,1 9

例子:

方法:在这里可以得出一个重要的观察结果:数字的总和最多为81(即X = 999999999),并且与每个数字的总和相对应,我们得到单个X值。因此,我们可以遍历每个数字的总和,并检查X的结果值是否有效。

下面是上述方法的实现:

C++
// C++ implementation of the approach
#include 
using namespace std;
  
// Function to return the count of
// valid values of X
int getCount(int a, int b, int c)
{
    int count = 0;
  
    // Iterate through all possible
    // sum of digits of X
    for (int i = 1; i <= 81; i++) {
  
        // Get current value of X for sum of digits i
        int cr = b * pow(i, a) + c;
  
        int tmp = cr;
        int sm = 0;
  
        // Find sum of digits of cr
        while (tmp) {
            sm += tmp % 10;
            tmp /= 10;
        }
  
        // If cr is a valid choice for X
        if (sm == i && cr < 1e9)
            count++;
    }
  
    // Return the count
    return count;
}
  
// Driver code
int main()
{
    int a = 3, b = 2, c = 8;
    cout << getCount(a, b, c);
  
    return 0;
}


Java
// Java implementation of the approach 
class GfG 
{ 
  
// Function to return the count of 
// valid values of X 
static int getCount(int a, int b, int c) 
{ 
    int count = 0; 
  
    // Iterate through all possible 
    // sum of digits of X 
    for (int i = 1; i <= 81; i++) 
    { 
  
        // Get current value of X for sum of digits i 
        int cr = b * (int)Math.pow(i, a) + c; 
  
        int tmp = cr; 
        int sm = 0; 
  
        // Find sum of digits of cr 
        while (tmp != 0) 
        { 
            sm += tmp % 10; 
            tmp /= 10; 
        } 
  
        // If cr is a valid choice for X 
        if (sm == i && cr < 1e9) 
            count++; 
    } 
  
    // Return the count 
    return count; 
} 
  
// Driver code 
public static void main(String[] args) 
{ 
    int a = 3, b = 2, c = 8; 
    System.out.println(getCount(a, b, c)); 
}
} 
  
// This code is contributed by Prerna Saini.


Python3
# Python3 implementation of the approach
  
# Function to return the count of
# valid values of X
def getCount(a, b, c):
  
    count = 0
  
    # Iterate through all possible
    # sum of digits of X
    for i in range(1, 82):
  
        # Get current value of X for
        # sum of digits i
        cr = b * pow(i, a) + c
  
        tmp = cr
        sm = 0
  
        # Find sum of digits of cr
        while (tmp):
            sm += tmp % 10
            tmp //= 10
          
        # If cr is a valid choice for X
        if (sm == i and cr < 10**9):
            count += 1
      
    # Return the count
    return count
  
# Driver code
a, b, c = 3, 2, 8
print(getCount(a, b, c))
  
# This code is contributed by Mohit Kumar


C#
// C# implementation of the approach 
using System;
  
class GFG 
{ 
  
// Function to return the count of 
// valid values of X 
static int getCount(int a, int b, int c) 
{ 
    int count = 0; 
  
    // Iterate through all possible 
    // sum of digits of X 
    for (int i = 1; i <= 81; i++) 
    { 
  
        // Get current value of X for sum 
        // of digits i 
        int cr = b * (int)Math.Pow(i, a) + c; 
  
        int tmp = cr; 
        int sm = 0; 
  
        // Find sum of digits of cr 
        while (tmp != 0) 
        { 
            sm += tmp % 10; 
            tmp /= 10; 
        } 
  
        // If cr is a valid choice for X 
        if (sm == i && cr < 1e9) 
            count++; 
    } 
  
    // Return the count 
    return count; 
} 
  
// Driver code 
public static void Main() 
{ 
    int a = 3, b = 2, c = 8; 
    Console.Write(getCount(a, b, c)); 
}
} 
  
// This code is contributed
// by Akanksha Rai


PHP


输出:
3