N-ésimo término donde K+1-ésimo término es el producto del K-ésimo término con la diferencia del dígito máximo y mínimo del K-ésimo término

Dados dos números enteros N y D , la tarea es encontrar el valor de F(N) donde el valor de F(1) es D, donde F(K) se da como: 
 

F(K+1) = F(K) * (Max_{Digit}(F(K)) - Min_{Digit}(F(K)))

Ejemplos: 
 

Entrada: N = 3, D = 487 
Salida: 15584 
Explicación: 
Como F(1) = 487, 
F(2) = 487 * (maxDigit(487) – minDigit(487)) = 487 * 4 = 1948 
F(3) = 1948 * (maxDigit(1948) – minDigit(1948)) = 1948 * 8 = 15584
Entrada: N = 5, D = 487 
Salida: 981792 
 

Enfoque: La idea es calcular el valor de F(2) a F(N) iterativamente con la ayuda del bucle . Además, los dígitos máximo y mínimo de cada número se pueden calcular con la ayuda del ciclo dividiendo el número por 10, tomando simultáneamente el módulo para obtener el dígito.
A continuación se muestra la implementación del enfoque anterior:
 

C++

// C++ implementation to find the value
// of the given function for the value
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to find minimum digit
// in the decimal representation of N
int MIN(int n)
{
    int ans = 11;
 
    // Loop to find the minimum
    // digit in the number
    while (n) {
        ans = min(ans, n % 10);
        n /= 10;
    }
    return ans;
}
 
// Function to find maximum digit
// in the decimal representation of N
int MAX(int n)
{
    int ans = -1;
 
    // Loop to find the maximum
    // digit in the number
    while (n) {
        ans = max(ans, n % 10);
        n /= 10;
    }
    return ans;
}
 
// Function to find the value
// of the given function
void Find_value(int n, int k)
{
    k--;
    int x = 0;
    int y = 0;
 
    // Loop to compute the values
    // of the given number
    while (k--) {
        x = MIN(n);
        y = MAX(n);
 
        if (y - x == 0)
            break;
        n *= (y - x);
    }
    cout << n;
}
 
// Driver Code
int main()
{
    int N = 487, D = 5;
 
    // Function Call
    Find_value(N, D);
 
    return 0;
}

Java

// Java implementation to find the value
// of the given function for the value
 
class GFG{
 
// Function to find minimum digit in
// the decimal representation of N
static int MIN(int n)
{
    int ans = 11;
 
    // Loop to find the minimum
    // digit in the number
    while (n > 0)
    {
        ans = Math.min(ans, n % 10);
        n /= 10;
    }
    return ans;
}
 
// Function to find maximum digit
// in the decimal representation of N
static int MAX(int n)
{
    int ans = -1;
 
    // Loop to find the maximum
    // digit in the number
    while (n > 0)
    {
        ans = Math.max(ans, n % 10);
        n /= 10;
    }
    return ans;
}
 
// Function to find the value
// of the given function
static void Find_value(int n, int k)
{
    k--;
    int x = 0;
    int y = 0;
 
    // Loop to compute the values
    // of the given number
    while (k-- > 0)
    {
        x = MIN(n);
        y = MAX(n);
 
        if (y - x == 0)
            break;
        n *= (y - x);
    }
    System.out.print(n);
}
 
// Driver Code
public static void main(String[] args)
{
    int N = 487, D = 5;
 
    // Function Call
    Find_value(N, D);
}
}
 
// This code is contributed by 29AjayKumar

Python3

# Python3 implementation to find the value
# of the given function for the value
 
# Function to find minimum digit
# in the decimal representation of N
def MIN(n):
     
    ans = 11
     
    # Loop to find the minimum
    # digit in the number
    while n:
        ans = min(ans, n % 10)
        n //= 10
    return ans
 
# Function to find maximum digit in
# the decimal representation of N
def MAX(n):
     
    ans = -1
     
    # Loop to find the maximum
    # digit in the number
    while n:
        ans = max(ans, n % 10)
        n //= 10
    return ans
 
# Function to find the value
# of the given function
def Find_value(n, k):
     
    k -= 1
    (x, y) = (0, 0)
     
    # Loop to compute the values
    # of the given number
    while k:
        k -= 1
        x = MIN(n)
        y = MAX(n)
        if ((y - x) == 0):
            break
        n *= (y - x)
         
    print(n, end = ' ')
 
# Driver Code
if __name__=='__main__':
     
    (N, D) = (487, 5)
     
    # Function Call
    Find_value(N, D)
 
# This code is contributed by rutvik_56

C#

// C# implementation to find the value
// of the given function for the value
using System;
 
class GFG{
 
// Function to find minimum digit in
// the decimal representation of N
static int MIN(int n)
{
    int ans = 11;
 
    // Loop to find the minimum
    // digit in the number
    while (n > 0)
    {
        ans = Math.Min(ans, n % 10);
        n /= 10;
    }
    return ans;
}
 
// Function to find maximum digit
// in the decimal representation of N
static int MAX(int n)
{
    int ans = -1;
 
    // Loop to find the maximum
    // digit in the number
    while (n > 0)
    {
        ans = Math.Max(ans, n % 10);
        n /= 10;
    }
    return ans;
}
 
// Function to find the value
// of the given function
static void Find_value(int n, int k)
{
    k--;
    int x = 0;
    int y = 0;
 
    // Loop to compute the values
    // of the given number
    while (k-- > 0)
    {
        x = MIN(n);
        y = MAX(n);
 
        if (y - x == 0)
            break;
        n *= (y - x);
    }
    Console.Write(n);
}
 
// Driver Code
public static void Main(String[] args)
{
    int N = 487, D = 5;
 
    // Function Call
    Find_value(N, D);
}
}
 
// This code is contributed by 29AjayKumar

Javascript

<script>
 
// javascript implementation to find the value
// of the given function for the value
 
// Function to find minimum digit
// in the decimal representation of N
function MIN( n)
{
    let ans = 11;
 
    // Loop to find the minimum
    // digit in the number
    while (n) {
        ans = parseInt(Math.min(ans, n % 10));
        n = parseInt(n/ 10);
    }
    return ans;
}
 
// Function to find maximum digit
// in the decimal representation of N
function MAX( n)
{
    let ans = -1;
 
    // Loop to find the maximum
    // digit in the number
    while (n) {
        ans = parseInt(Math.max(ans, n % 10));
       n = parseInt(n/ 10);
    }
    return ans;
}
 
// Function to find the value
// of the given function
function Find_value( n,  k)
{
    k--;
    let x = 0;
    let y = 0;
 
    // Loop to compute the values
    // of the given number
    while (k--) {
        x = parseInt(MIN(n));
        y = parseInt(MAX(n));
 
        if (y - x == 0)
            break;
        n *= (y - x);
    }
    document.write(n);
}
 
// Driver Code
let N = 487, D = 5;
 
    // Function Call
    Find_value(N, D);
 
// This code contributed by gauravrajput1
 
</script>
Producción: 

981792

 

Complejidad del tiempo: O(D*log(N))

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por biswas8927 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *