Nth term where K+1th term is product of Kth term with difference of max and min digit of Kth term
Last Updated :
17 Nov, 2021
Given two integers N and D, the task is to find the value of F(N) where the value of F(1) is D, where F(K) is given as:
Examples:
Input: N = 3, D = 487
Output: 15584
Explanation:
As F(1) = 487,
F(2) = 487 * (maxDigit(487) – minDigit(487)) = 487 * 4 = 1948
F(3) = 1948 * (maxDigit(1948) – minDigit(1948)) = 1948 * 8 = 15584
Input: N = 5, D = 487
Output: 981792
Approach: The idea is to compute the value of F(2) to F(N) iteratively with the help of the loop. Also, the maximum and minimum digits in each number can be computed using the help of the loop by dividing the number by 10, Simultaneously taking the modulo to get the digit.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
int MIN( int n)
{
int ans = 11;
while (n) {
ans = min(ans, n % 10);
n /= 10;
}
return ans;
}
int MAX( int n)
{
int ans = -1;
while (n) {
ans = max(ans, n % 10);
n /= 10;
}
return ans;
}
void Find_value( int n, int k)
{
k--;
int x = 0;
int y = 0;
while (k--) {
x = MIN(n);
y = MAX(n);
if (y - x == 0)
break ;
n *= (y - x);
}
cout << n;
}
int main()
{
int N = 487, D = 5;
Find_value(N, D);
return 0;
}
|
Java
class GFG{
static int MIN( int n)
{
int ans = 11 ;
while (n > 0 )
{
ans = Math.min(ans, n % 10 );
n /= 10 ;
}
return ans;
}
static int MAX( int n)
{
int ans = - 1 ;
while (n > 0 )
{
ans = Math.max(ans, n % 10 );
n /= 10 ;
}
return ans;
}
static void Find_value( int n, int k)
{
k--;
int x = 0 ;
int y = 0 ;
while (k-- > 0 )
{
x = MIN(n);
y = MAX(n);
if (y - x == 0 )
break ;
n *= (y - x);
}
System.out.print(n);
}
public static void main(String[] args)
{
int N = 487 , D = 5 ;
Find_value(N, D);
}
}
|
Python3
def MIN (n):
ans = 11
while n:
ans = min (ans, n % 10 )
n / / = 10
return ans
def MAX (n):
ans = - 1
while n:
ans = max (ans, n % 10 )
n / / = 10
return ans
def Find_value(n, k):
k - = 1
(x, y) = ( 0 , 0 )
while k:
k - = 1
x = MIN (n)
y = MAX (n)
if ((y - x) = = 0 ):
break
n * = (y - x)
print (n, end = ' ' )
if __name__ = = '__main__' :
(N, D) = ( 487 , 5 )
Find_value(N, D)
|
C#
using System;
class GFG{
static int MIN( int n)
{
int ans = 11;
while (n > 0)
{
ans = Math.Min(ans, n % 10);
n /= 10;
}
return ans;
}
static int MAX( int n)
{
int ans = -1;
while (n > 0)
{
ans = Math.Max(ans, n % 10);
n /= 10;
}
return ans;
}
static void Find_value( int n, int k)
{
k--;
int x = 0;
int y = 0;
while (k-- > 0)
{
x = MIN(n);
y = MAX(n);
if (y - x == 0)
break ;
n *= (y - x);
}
Console.Write(n);
}
public static void Main(String[] args)
{
int N = 487, D = 5;
Find_value(N, D);
}
}
|
Javascript
<script>
function MIN( n)
{
let ans = 11;
while (n) {
ans = parseInt(Math.min(ans, n % 10));
n = parseInt(n/ 10);
}
return ans;
}
function MAX( n)
{
let ans = -1;
while (n) {
ans = parseInt(Math.max(ans, n % 10));
n = parseInt(n/ 10);
}
return ans;
}
function Find_value( n, k)
{
k--;
let x = 0;
let y = 0;
while (k--) {
x = parseInt(MIN(n));
y = parseInt(MAX(n));
if (y - x == 0)
break ;
n *= (y - x);
}
document.write(n);
}
let N = 487, D = 5;
Find_value(N, D);
</script>
|
Time Complexity: O(D*log(N))
Auxiliary Space: O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...