给定三个整数A , B和C ,任务是找到X的值的计数,以便满足以下条件,
X = B * Sm(X) A + C其中Sm(X)表示X的数字总和,且1
例子:
Input: A = 3, B = 2, C = 8
Output: 3
For X = 10, 2 * (1)3 + 8 = 10
For X = 2008, 2 * (10)3 + 8 = 2008
For X = 13726, 2 * (19)3 + 8 = 13726
Input: A = 2, B = 3, C = 10
Output: 1
方法:在这里可以得出一个重要的观察结果:数字的总和最多为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