Skip to content
Related Articles

Related Articles

Remove two consecutive integers from 1 to N to make sum equal to S
  • Last Updated : 10 Jan, 2020

Given a sum S and an integer N, The task is to remove two consecutive integers from 1 to N to make sum equal to S.

Examples:

Input: N = 4, S = 3
Output: Yes
sum(1, 2, 3, 4) = 10, 
remove 3 and 4 from 1 to N
now sum(1, 2) = 3 = S
Hence by removing 3 and 4 we got sum = S

Input: N = 5, S =3
Output: No
Its not possible to remove two elements
from 1 to N such that new sum is 3
  • Method 1:
    • Create an array with elements from 1 to N.
    • Each time remove two consecutive elements and check the difference between sum of N natural numbers and sum of two removed elements is S.
    • sum of N natural numbers can be calculated using formula
      sum = (n)(n + 1) / 2
    Time complexity: O(n)
    Space complexity: O(n)
    
  • Method 2:
    • We know that, sum of N natural numbers can be calculated using formula
      sum = (n)(n + 1) / 2
    • According to the problem statement, we need to remove two integers from 1 to N such that the sum of remaining integers is S.
    • Let the two consecutive integers to be removed be i and i + 1.
    • Therefore,
      required sum = S = (n)(n + 1) / 2 - (i) - (i + 1)
                     S = (n)(n + 1) / 2 - (2i - 1)
      
      Therefore,
      i = ((n)(n + 1) / 4) - ((S + 1) / 2)
      
    • Hence find i using above formula
    • if i is an integer, then answer is Yes else No

    Below is the implementation of the above approach:

    C++




    // C++ program remove two consecutive integers
    // from 1 to N to make sum equal to S
      
    #include <bits/stdc++.h>
    using namespace std;
      
    // Function to find the numbers
    // to be removed
    float findNumber(int N, int S)
    {
      
        // typecast appropriately
        // so that answer is float
        float i = (((float)(N) * (float)(N + 1)) / 4)
                  - ((float)(S + 1) / 2);
      
        // return the obtained result
        return i;
    }
      
    void check(int N, int S)
    {
      
        float i = findNumber(N, S);
      
        // Convert i to integer
        int integerI = (int)i;
      
        // If i is an integer is 0
        // then answer is Yes
        if (i - integerI == 0)
            cout << "Yes: "
                 << integerI << ", "
                 << integerI + 1
                 << endl;
        else
            cout << "No"
                 << endl;
    }
      
    // Driver code
    int main()
    {
      
        int N = 4, S = 3;
        check(N, S);
      
        N = 5, S = 3;
        check(N, S);
      
        return 0;
    }

    Java




    // Java program remove two consecutive integers 
    // from 1 to N to make sum equal to S 
      
    class GFG 
    {
          
        // Function to find the numbers 
        // to be removed 
        static float findNumber(int N, int S) 
        
          
            // typecast appropriately 
            // so that answer is float 
            float i = (((float)(N) * (float)(N + 1)) / 4
                    - ((float)(S + 1) / 2); 
          
            // return the obtained result 
            return i; 
        
          
        static void check(int N, int S) 
        
          
            float i = findNumber(N, S); 
          
            // Convert i to integer 
            int integerI = (int)i; 
          
            // If i is an integer is 0 
            // then answer is Yes 
            if (i - integerI == 0
                System.out.println("Yes: " + integerI + 
                                    ", " + (integerI + 1)) ;
            else
                System.out.println("No");
        
          
        // Driver code 
        public static void main (String[] args)
        
          
            int N = 4, S = 3
            check(N, S); 
          
            N = 5; S = 3
            check(N, S); 
      
        
    }
      
    // This code is contributed by AnkitRai01

    Python3




    # Python3 program remove two consecutive integers 
    # from 1 to N to make sum equal to S 
      
    # Function to find the numbers 
    # to be removed 
    def findNumber(N, S) :
      
        # typecast appropriately 
        # so that answer is float 
        i = (((N) * (N + 1)) / 4) - ((S + 1) / 2); 
      
        # return the obtained result 
        return i; 
      
    def check(N, S) :
      
        i = findNumber(N, S); 
      
        # Convert i to integer 
        integerI = int(i); 
      
        # If i is an integer is 0 
        # then answer is Yes 
        if (i - integerI == 0) :
            print("Yes:", integerI,
                     ",", integerI + 1); 
        else :
            print("No");
      
    # Driver code 
    if __name__ == "__main__"
      
        N = 4;
        S = 3
        check(N, S); 
      
        N = 5;
        S = 3
        check(N, S); 
      
    # This code is contributed by AnkitRai01

    C#




    // C# program remove two consecutive integers 
    // from 1 to N to make sum equal to S 
    using System;
      
    class GFG 
          
        // Function to find the numbers 
        // to be removed 
        static float findNumber(int N, int S) 
        
          
            // typecast appropriately 
            // so that answer is float 
            float i = (((float)(N) * (float)(N + 1)) / 4) 
                    - ((float)(S + 1) / 2); 
          
            // return the obtained result 
            return i; 
        
          
        static void check(int N, int S) 
        
            float i = findNumber(N, S); 
          
            // Convert i to integer 
            int integerI = (int)i; 
          
            // If i is an integer is 0 
            // then answer is Yes 
            if (i - integerI == 0) 
                Console.WriteLine("Yes: " + integerI + 
                                    ", " + (integerI + 1)) ; 
            else
                Console.WriteLine("No"); 
        
          
        // Driver code 
        public static void Main() 
        
          
            int N = 4, S = 3; 
            check(N, S); 
          
            N = 5; S = 3; 
            check(N, S); 
        
      
    // This code is contributed by AnkitRai01 
    Output:
    Yes: 3, 4
    No
    

    Time complexity: O(1)
    Space complexity: 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
Recommended Articles
Page :