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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program for the above approach
#include <bits/stdc++.h>
  
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

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Python 3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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")

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


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.