Open In App

Triplet with no element divisible by 3 and sum N

Improve
Improve
Like Article
Like
Save
Share
Report

Given an integer N greater than 2, the task is to print any combination of a, b and c such that:

  • a + b + c = N
  • a, b and c are not divisible by 3.

Examples: 

Input: N = 233
Output: 77 77 79

Input: N = 3
Output: 1 1 1

A naive approach is to use three loops and check for the given condition. 

Below is the implementation of the above approach:  

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>


Output: 

1 2 230

 

Time Complexity: O(N3), as we are using a loop to traverse N3 times.

Auxiliary Space: O(1), as we are not using any extra space.

Efficient approach: 

  1. Consider 1 as one of the three numbers.
  2. The other two numbers will be: 
    • (2, n-3) if n-2 is divisible by 3.
    • Otherwise (1, n-2) if n-2 is not divisible by 3.

Below is the implementation of the above approach:  

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>


Output: 

1 2 230

 

Time Complexity: O(1), as we are not using any loop or recursion to traverse.

Auxiliary Space: O(1), as we are not using any extra space.
 



Last Updated : 08 Jun, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads