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

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 `

Output:

```Yes

```

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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.