Find the number of solutions to the given equation
Given three integers A, B and C, the task is to find the count of values of X such that the following condition is satisfied,
X = B * Sm(X)A + C where Sm(X) denotes the sum of digits of X and 1 < X < 109.
Examples:
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
Approach: An important observation can be made here that the sum of digits can be atmost 81 (i.e. X = 999999999) and corresponding to each sum of digits, we get a single value of X. So we can iterate through each sum of digit and check if the resulting value of X is valid or not.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
int getCount( int a, int b, int c)
{
int count = 0;
for ( int i = 1; i <= 81; i++) {
int cr = b * pow (i, a) + c;
int tmp = cr;
int sm = 0;
while (tmp) {
sm += tmp % 10;
tmp /= 10;
}
if (sm == i && cr < 1e9)
count++;
}
return count;
}
int main()
{
int a = 3, b = 2, c = 8;
cout << getCount(a, b, c);
return 0;
}
|
Java
import java.io.*;
class GfG
{
static int getCount( int a, int b, int c)
{
int count = 0 ;
for ( int i = 1 ; i <= 81 ; i++)
{
int cr = b * ( int )Math.pow(i, a) + c;
int tmp = cr;
int sm = 0 ;
while (tmp != 0 )
{
sm += tmp % 10 ;
tmp /= 10 ;
}
if (sm == i && cr < 1e9)
count++;
}
return count;
}
public static void main(String[] args)
{
int a = 3 , b = 2 , c = 8 ;
System.out.println(getCount(a, b, c));
}
}
|
Python3
def getCount(a, b, c):
count = 0
for i in range ( 1 , 82 ):
cr = b * pow (i, a) + c
tmp = cr
sm = 0
while (tmp):
sm + = tmp % 10
tmp / / = 10
if (sm = = i and cr < 10 * * 9 ):
count + = 1
return count
a, b, c = 3 , 2 , 8
print (getCount(a, b, c))
|
C#
using System;
class GFG
{
static int getCount( int a, int b, int c)
{
int count = 0;
for ( int i = 1; i <= 81; i++)
{
int cr = b * ( int )Math.Pow(i, a) + c;
int tmp = cr;
int sm = 0;
while (tmp != 0)
{
sm += tmp % 10;
tmp /= 10;
}
if (sm == i && cr < 1e9)
count++;
}
return count;
}
public static void Main()
{
int a = 3, b = 2, c = 8;
Console.Write(getCount(a, b, c));
}
}
|
PHP
<?php
function getCount( $a , $b , $c )
{
$count = 0;
for ( $i = 1; $i <= 81; $i ++)
{
$cr = $b * (int)pow( $i , $a ) + $c ;
$tmp = $cr ;
$sm = 0;
while ( $tmp != 0)
{
$sm += $tmp % 10;
$tmp /= 10;
}
if ( $sm == $i && $cr < 1e9)
$count ++;
}
return $count ;
}
{
$a = 3; $b = 2; $c = 8;
echo (getCount( $a , $b , $c ));
}
|
Javascript
<script>
function getCount(a, b, c)
{
let count = 0;
for (let i = 1; i <= 81; i++)
{
let cr = b * Math.pow(i, a) + c;
let tmp = cr;
let sm = 0;
while (tmp != 0)
{
sm += tmp % 10;
tmp = Math.floor(tmp / 10);
}
if (sm == i && cr < 1e9)
count++;
}
return count;
}
let a = 3, b = 2, c = 8;
document.write(getCount(a, b, c));
</script>
|
Time Complexity: O(k*d) where k = 81 and d is the number of digits of X for each corresponding value of k.
Auxiliary Space: O(1), since no extra space has been taken.
Last Updated :
16 Dec, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...