Encuentre M para los cuales A, B, C forman un AP en el orden dado si alguno se multiplica por M

Dados 3 números enteros positivos A, B y C. Elija un número entero positivo M y multiplique cualquiera de A, B o C por M. La tarea es decidir si A, B y C cumplirían con la media de progresión aritmética (AP) Promedio después de realizar la operación anterior una vez. El orden de A, B, C no se puede cambiar.

Ejemplos:

Entrada: A = 30, B = 5, C = 10
Salida: SI
Explicación:  B = 5 se puede multiplicar por M = 4. 
Entonces 2 * B = A + C (2 * 20 = 30 + 10).

Entrada: A = 2, B = 1, C = 1
Salida: NO
Explicación:  A + C = 3 que es impar. B = 1 que es impar. 
Ambos valores no se pueden hacer pares (porque 2*B siempre es par, por lo que es necesario hacer que ambos sean pares) e iguales simultáneamente.

 

Acercarse: 

  • Se dice que tres enteros están en AP si

2 * B = A + C -(1)

Esta ecuación también se puede escribir como 

2 * B – C = A – (2)

2 * B – A = C -(3)

A continuación se muestran los pasos que utilizan esta relación para determinar si los tres números dados pueden formar un AP o no:

  • Declare una variable new_b e iníciela igual a 2 * B .
  • Retorna verdadero si A, B, C ya están en AP . Cualquiera de ellos se puede multiplicar por M=1 y la respuesta siempre será “ ”.
  • Devuelve verdadero si B se puede multiplicar por cualquier número para que sea igual a A+C, es decir (A + C) % new_b = 0 . El resto siempre será 0 independientemente del valor de M .
  • Ahora las únicas opciones que quedan son multiplicar A o C para que su suma sea igual a new_b .
    • Si (A + C) > new_b, devuelve falso . En este caso, multiplicar A o C por M solo aumentará su valor. La respuesta siempre será “ NO ”.
    • De lo contrario, si (new_b – C) % A = 0 , devuelve verdadero . En este caso, A se puede multiplicar por algún número entero M. En este caso, (new_b – C) puede verse como un múltiplo de A. Por lo tanto, al dividir (nuevo_b – C) por A , el resto siempre será 0 independientemente del valor de M. La respuesta será “ ” (a por ecuación (2)).
    • De lo contrario, si   (new_b – A) % B = 0 , devuelve verdadero . En este caso, C se puede multiplicar por algún número entero M. En este caso, (new_b – A) puede verse como un múltiplo de C. Por lo tanto, al dividir (new_b – A) por C , el resto siempre será 0 independientemente del valor de M. La respuesta será “ ” (según la ecuación (3)).
    • De lo contrario, devuelve falso .

Ilustración:

Entrada: A = 30, B = 5, C = 10 
Salida: SI
Explicación:
new_b = 2 * B
           = 2 * 5
           = 10
(A + C) % new_b 
(30 + 10) % 10 
40 % 10 = 0
Esto prueba que los números 30 5 10 están en AP después de multiplicar con algún número M.

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program to implement
// the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to check if A, B, C
// can be in A.P. after multiplying
// by any integer M
bool isAP(int A, int B, int C)
{
    int new_b = B * 2;
 
    // Check if A, B, C are already
    // in A.P.
    if (new_b == (A + C))
        return true;
 
    // Check if multiplying B will
    // give A.P.
    if ((A + C) % new_b == 0)
        return true;
 
    if ((A + C) > new_b)
        return false;
 
    // Check if multiplying A will
    // give A.P.
    if ((new_b - C) % A == 0)
        return true;
 
    // Check if multiplying C will
    // give A.P.
    if ((new_b - A) % C == 0)
        return true;
 
    return false;
}
 
// Driver code
int main()
{
    int A, B, C;
    A = 30;
    B = 5;
    C = 10;
 
    // Function call
    bool ans = isAP(A, B, C);
 
    // Displaying the answer
    if (ans)
        cout << "YES";
    else
        cout << "NO";
    return 0;
}

Java

// Java program for the above approach
import java.io.*;
import java.lang.*;
import java.util.*;
 
class GFG {
 
  // Function to check if A, B, C
  // can be in A.P. after multiplying
  // by any integer M
  static Boolean isAP(int A, int B, int C)
  {
    int new_b = B * 2;
 
    // Check if A, B, C are already
    // in A.P.
    if (new_b == (A + C))
      return true;
 
    // Check if multiplying B will
    // give A.P.
    if ((A + C) % new_b == 0)
      return true;
 
    if ((A + C) > new_b)
      return false;
 
    // Check if multiplying A will
    // give A.P.
    if ((new_b - C) % A == 0)
      return true;
 
    // Check if multiplying C will
    // give A.P.
    if ((new_b - A) % C == 0)
      return true;
 
    return false;
  }
 
  // Driver code
  public static void main (String[] args) {
    int A, B, C;
    A = 30;
    B = 5;
    C = 10;
 
    // Function call
    Boolean ans = isAP(A, B, C);
 
    // Displaying the answer
    if (ans)
      System.out.print("YES");
    else
      System.out.print("NO");
  }
}
 
// This code is contributed by hrithikgarg03188

Python3

# Python code for the above approach
 
# Function to check if A, B, C
# can be in A.P. after multiplying
# by any integer M
def isAP(A, B, C):
    new_b = B * 2
 
    # Check if A, B, C are already
    # in A.P.
    if (new_b == (A + C)):
        return True
 
    # Check if multiplying B will
    # give A.P.
    if ((A + C) % new_b == 0):
        return True
 
    if ((A + C) > new_b):
        return False
 
    # Check if multiplying A will
    # give A.P.
    if ((new_b - C) % A == 0):
        return True
 
    # Check if multiplying C will
    # give A.P.
    if ((new_b - A) % C == 0):
        return True
 
    return False
 
# Driver code
A = 30
B = 5
C = 10
 
# Function call
ans = isAP(A, B, C)
 
# Displaying the answer
if (ans):
    print("YES")
else:
    print("NO")
 
# This code is contributed by Saurabh Jaiswal

C#

// C# program to implement
// the above approach
using System;
class GFG
{
 
  // Function to check if A, B, C
  // can be in A.P. after multiplying
  // by any integer M
  static bool isAP(int A, int B, int C)
  {
    int new_b = B * 2;
 
    // Check if A, B, C are already
    // in A.P.
    if (new_b == (A + C))
      return true;
 
    // Check if multiplying B will
    // give A.P.
    if ((A + C) % new_b == 0)
      return true;
 
    if ((A + C) > new_b)
      return false;
 
    // Check if multiplying A will
    // give A.P.
    if ((new_b - C) % A == 0)
      return true;
 
    // Check if multiplying C will
    // give A.P.
    if ((new_b - A) % C == 0)
      return true;
 
    return false;
  }
 
  // Driver code
  public static int Main()
  {
    int A, B, C;
    A = 30;
    B = 5;
    C = 10;
 
    // Function call
    bool ans = isAP(A, B, C);
 
    // Displaying the answer
    if (ans)
      Console.Write("YES");
    else
      Console.Write("NO");
    return 0;
  }
}
 
// This code is contributed by Taranpreet

Javascript

<script>
        // JavaScript code for the above approach
 
        // Function to check if A, B, C
        // can be in A.P. after multiplying
        // by any integer M
        function isAP(A, B, C)
        {
            let new_b = B * 2;
 
            // Check if A, B, C are already
            // in A.P.
            if (new_b == (A + C))
                return true;
 
            // Check if multiplying B will
            // give A.P.
            if ((A + C) % new_b == 0)
                return true;
 
            if ((A + C) > new_b)
                return false;
 
            // Check if multiplying A will
            // give A.P.
            if ((new_b - C) % A == 0)
                return true;
 
            // Check if multiplying C will
            // give A.P.
            if ((new_b - A) % C == 0)
                return true;
 
            return false;
        }
 
        // Driver code
        let A, B, C;
        A = 30;
        B = 5;
        C = 10;
 
        // Function call
        let ans = isAP(A, B, C);
 
        // Displaying the answer
        if (ans)
            document.write("YES");
        else
            document.write("NO");
 
       // This code is contributed by Potta Lokesh
    </script>
Producción

YES

Tiempo Complejidad: O(1) 
Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por kaurareen 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 *