Related Articles

# Check if the concatenation of first N natural numbers is divisible by 3

• Last Updated : 31 Mar, 2021

Given an integer N, the task is to check if the concatenation of first N natural numbers is divisible by 3 or not. Print Yes if divisible and No if not.

Examples:

Input: N = 3
Output: Yes
Explanation:
The concatenated number = 123
Since it is divisible by 3, the output is Yes
Input: N = 7
Output: No
Explanation: The concatenated number = 1234567
Since it is not divisible by 3, the output is No.

Naive Approach
The simplest approach is to concatenate the first N natural numbers and calculate the sum of digits of the resultant number and check if it is divisible by 3 or not.
Time Complexity: O(N)
Auxiliary Space: O(1)
Efficient Approach:
To optimize the above approach, we can observe a pattern. The concatenation of first N natural numbers is not divisible by 3 for the following series 1, 4, 7, 10, 13, 16, 19, and so on. The Nth term of the series is given by the formula 3×n +1. Hence, if (N – 1) is not divisible by 3, then the resultant number is divisible by 3, so print Yes. Otherwise, print No.
Below is the implementation of the above approach:

## C++

 `// C++ program for the above approach``#include ` `using` `namespace` `std;` `// Function that returns True if``// concatenation of first N natural``// numbers is divisible by 3``bool` `isDivisible(``int` `N)``{``    ``// Check using the formula``    ``return` `(N - 1) % 3 != 0;``}`  `// Driver Code``int` `main()``{``    ``// Given Number``    ``int` `N = 6;``    ` `    ``// Function Call``    ``if` `(isDivisible(N))``        ``cout << (``"Yes"``);``    ` `    ``else``        ``cout << (``"No"``);``    ` `    ``return` `0;``}` `// This code is contributed by Mohit Kumar`

## Java

 `// Java program for the above approach``class` `GFG{`` ` `// Function that returns True if``// concatenation of first N natural``// numbers is divisible by 3``static` `boolean` `isDivisible(``int` `N)``{``    ``// Check using the formula``    ``return` `(N - ``1``) % ``3` `!= ``0``;``}`` ` ` ` `// Driver Code``public` `static` `void` `main(String[] args)``{``    ``// Given Number``    ``int` `N = ``6``;``     ` `    ``// Function Call``    ``if` `(isDivisible(N))``        ``System.out.println(``"Yes"``);``     ` `    ``else``        ``System.out.println(``"No"``);``}``}` `// This code is contributed by Ritik Bansal`

## Python 3

 `# Python program for the above approach` `# Function that returns True if``# concatenation of first N natural``# numbers is divisible by 3``def` `isDivisible(N):` `    ``# Check using the formula``    ``return` `(N ``-` `1``) ``%` `3` `!``=` `0`  `# Driver Code``if` `__name__ ``=``=` `"__main__"``:` `    ``# Given Number``    ``N ``=` `6` `    ``# Function Call``    ``if` `(isDivisible(N)):``        ``print``(``"Yes"``)` `    ``else``:``        ``print``(``"No"``)`

## C#

 `// C# program for the above approach``using` `System;``class` `GFG{` `// Function that returns True if``// concatenation of first N natural``// numbers is divisible by 3``static` `bool` `isDivisible(``int` `N)``{``    ``// Check using the formula``    ``return` `(N – 1) % 3 != 0;``}` `// Driver Code``public` `static` `void` `Main()``{``    ``// Given Number``    ``int` `N = 6;``    ` `    ``// Function Call``    ``if` `(isDivisible(N))``    ``Console.Write(``"Yes"``);``    ` `    ``else``    ``Console.Write(``"No"``);``}``}` `// This code is contributed by Code_Mech`

## Javascript

 ``
Output:
`Yes`

Time Complexity: O(1)
Auxiliary Space: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up