Triplete sin elemento divisible por 3 y suma N

Dado un número entero N mayor que 2, la tarea es imprimir cualquier combinación de a, b y c tal que:

  • un + segundo + c = norte
  • a, b y c no son divisibles por 3.

Ejemplos: 

Input: N = 233
Output: 77 77 79

Input: N = 3
Output: 1 1 1

Un enfoque ingenuo es usar tres bucles y verificar la condición dada. 

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

C++

// C++ program to print a, b and c
// such that a+b+c=N
#include <bits/stdc++.h>
using namespace std;
 
// Function to print a, b and c
void printCombination(int n)
{
 
    // first loop
    for (int i = 1; i < n; i++) {
 
        // check for 1st number
        if (i % 3 != 0) {
 
            // second loop
            for (int j = 1; j < n; j++) {
 
                // check for 2nd number
                if (j % 3 != 0) {
 
                    // third loop
                    for (int k = 1; k < n; k++) {
 
                        // Check for 3rd number
                        if (k % 3 != 0 && (i + j + k) == n) {
                            cout << i << " " << j << " " << k;
                            return;
                        }
                    }
                }
            }
        }
    }
}
 
// Driver Code
int main()
{
    int n = 233;
 
    printCombination(n);
    return 0;
}

Java

// Java program to print a,
// b and c such that a+b+c=N
import java.io.*;
 
class GFG
{
 
// Function to print a, b and c
static void printCombination(int n)
{
    // first loop
    for (int i = 1; i < n; i++)
    {
 
        // check for 1st number
        if (i % 3 != 0)
        {
 
            // second loop
            for (int j = 1; j < n; j++)
            {
 
                // check for 2nd number
                if (j % 3 != 0)
                {
 
                    // third loop
                    for (int k = 1; k < n; k++)
                    {
 
                        // Check for 3rd number
                        if (k % 3 != 0 && (i + j + k) == n)
                        {
                            System.out.println( i + " " +
                                                j + " " + k);
                            return;
                        }
                    }
                }
            }
        }
    }
}
 
// Driver Code
public static void main (String[] args)
{
    int n = 233;
     
    printCombination(n);
}
}
 
// This code is contributed
// by anuj_67.

Python3

# Python3 program to print a, b
# and c such that a+b+c=N
 
# Function to print a, b and c
def printCombination(n):
 
    # first loop
    for i in range(1, n):
     
        # check for 1st number
        if (i % 3 != 0):
             
            # second loop
            for j in range(1, n):
 
                # check for 2nd number
                if (j % 3 != 0):
 
                    # third loop
                    for k in range(1, n):
 
                        # Check for 3rd number
                        if (k % 3 != 0 and
                           (i + j + k) == n):
                            print(i, j, k);
                            return;
 
# Driver Code
n = 233;
 
printCombination(n);
 
# This code is contributed
# by mits

C#

// C# program to print a,
// b and c such that a+b+c=N
class GFG
{
 
// Function to print a, b and c
static void printCombination(int n)
{
    // first loop
    for (int i = 1; i < n; i++)
    {
 
        // check for 1st number
        if (i % 3 != 0)
        {
 
            // second loop
            for (int j = 1; j < n; j++)
            {
 
                // check for 2nd number
                if (j % 3 != 0)
                {
 
                    // third loop
                    for (int k = 1; k < n; k++)
                    {
 
                        // Check for 3rd number
                        if (k % 3 != 0 && (i + j + k) == n)
                        {
                            System.Console.WriteLine(i + " " +
                                                     j + " " + k);
                            return;
                        }
                    }
                }
            }
        }
    }
}
 
// Driver Code
static void Main ()
{
    int n = 233;
     
    printCombination(n);
}
}
 
// This code is contributed
// by mits

PHP

<?php
// PHP program to print a, b and c
// such that a+b+c=N
 
// Function to print a, b and c
function printCombination($n)
{
 
    // first loop
    for ($i = 1; $i < $n; $i++)
    {
 
        // check for 1st number
        if ($i % 3 != 0)
        {
 
            // second loop
            for ($j = 1; $j < $n; $j++)
            {
 
                // check for 2nd number
                if ($j % 3 != 0)
                {
 
                    // third loop
                    for ($k = 1; $k < $n; $k++)
                    {
 
                        // Check for 3rd number
                        if ($k % 3 != 0 &&
                           ($i + $j + $k) == $n)
                        {
                            echo $i , " " , $j , " " , $k;
                            return;
                        }
                    }
                }
            }
        }
    }
}
 
// Driver Code
$n = 233;
 
printCombination($n);
 
// This code is contributed
// inder_verma
?>

Javascript

<script>
// Javascript program to print a, b and c
// such that a+b+c=N
 
// Function to print a, b and c
function printCombination(n)
{
 
    // first loop
    for (let i = 1; i < n; i++) {
 
        // check for 1st number
        if (i % 3 != 0) {
 
            // second loop
            for (let j = 1; j < n; j++) {
 
                // check for 2nd number
                if (j % 3 != 0) {
 
                    // third loop
                    for (let k = 1; k < n; k++) {
 
                        // Check for 3rd number
                        if (k % 3 != 0 && (i + j + k) == n) {
                            document.write(i + " " + j + " " + k);
                            return;
                        }
                    }
                }
            }
        }
    }
}
 
// Driver Code
let n = 233;
printCombination(n);
 
// This code is contributed by rishavmahato348.
</script>
Producción: 

1 2 230

 

Complejidad de tiempo : O(N 3 ), ya que estamos usando un bucle para atravesar N 3 veces.

Espacio auxiliar : O(1), ya que no estamos utilizando ningún espacio adicional.

Enfoque eficiente: 

  1. Considere el 1 como uno de los tres números.
  2. Los otros dos números serán: 
    • (2, n-3) si n-2 es divisible por 3.
    • De lo contrario (1, n-2) si n-2 no es divisible por 3.

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

C++

// C++ program to print a, b and c
// such that a+b+c=N
#include <bits/stdc++.h>
using namespace std;
 
// Function to print a, b and c
void printCombination(int n)
{
    cout << 1 << " ";
 
    // check if n-2 is divisible
    // by 3 or not
    if ((n - 2) % 3 == 0)
        cout << 2 << " " << n - 3;
    else
        cout << 1 << " " << n - 2;
}
 
// Driver Code
int main()
{
    int n = 233;
 
    printCombination(n);
    return 0;
}

Java

// Java program to print a, b
// and c such that a+b+c=N
class GFG
{
// Function to print a, b and c
static void printCombination(int n)
{
    System.out.print(1 + " ");
 
    // check if n-2 is divisible
    // by 3 or not
    if ((n - 2) % 3 == 0)
        System.out.print(2 + " " + (n - 3));
    else
        System.out.print(1 + " " + (n - 2));
}
 
// Driver Code
public static void main(String[] args)
{
    int n = 233;
 
    printCombination(n);
}
}
 
// This code is contributed by mits

Python3

# Python3 program to print a, b and c
# such that a+b+c=N
 
# Function to print a, b and c
def printCombination(n):
    print("1 ",end="");
 
    # check if n-2 is divisible
    # by 3 or not
    if ((n - 2) % 3 == 0):
        print("2",n - 3,end="");
    else:
        print("1",(n - 2),end="");
 
# Driver code
if __name__=='__main__':
    n = 233;
 
    printCombination(n);
 
# This code is contributed by mits

C#

// C# program to print a, b
// and c such that a+b+c=N
 
class GFG
{
// Function to print a, b and c
static void printCombination(int n)
{
    System.Console.Write(1 + " ");
 
    // check if n-2 is divisible
    // by 3 or not
    if ((n - 2) % 3 == 0)
        System.Console.Write(2 + " " + (n - 3));
    else
        System.Console.Write(1 + " " + (n - 2));
}
 
// Driver Code
static void Main()
{
    int n = 233;
 
    printCombination(n);
}
}
 
// This code is contributed by mits

PHP

<?php
// PHP program to print a, b and c
// such that a+b+c=N
 
// Function to print a, b and c
function printCombination($n)
{
    echo "1 ";
 
    // check if n-2 is divisible
    // by 3 or not
    if (($n - 2) % 3 == 0)
        echo "2 " . ($n - 3);
    else
        echo "1 " . ($n - 2);
}
 
// Driver code
$n = 233;
 
printCombination($n);
 
// This code is contributed by mits
?>

Javascript

<script>
 
// Javascript program to print a, b and c
// such that a+b+c=N
 
// Function to print a, b and c
function printCombination(n)
{
    document.write(1 + " ");
 
    // Check if n-2 is divisible
    // by 3 or not
    if ((n - 2) % 3 == 0)
        document.write(2 + " " + (n - 3));
    else
        document.write(1 + " " + (n - 2));
}
 
// Driver Code
let n = 233;
 
printCombination(n);
 
// This code is contributed by subhammahato348
 
</script>
Producción: 

1 2 230

 

Complejidad de tiempo : O (1), ya que no estamos usando ningún bucle o recursión para atravesar.

Espacio auxiliar : O(1), ya que no estamos utilizando ningún espacio adicional.
 

Publicación traducida automáticamente

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