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
- 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 removedfloat 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 codeint 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 removeddef 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 codeif __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 Susing 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 |
Javascript
// JS program remove two consecutive integers// from 1 to N to make sum equal to SÂ
// Function to find the numbers// to be removedfunction findNumber(N, S){    // typecast appropriately    // so that answer is float    let i = (((N) * (N + 1)) / 4) - ((S + 1) / 2);Â
    // return the obtained result    return i;}Â
function check(N, S){Â Â Â Â let i = findNumber(N, S);Â
    // Convert i to integer    let integerI = parseInt(i);Â
    // If i is an integer is 0    // then answer is Yes    if (i - integerI == 0){        let value = integerI + 1;        console.log("Yes: " + integerI + "," + value);    }    else        console.log("No")}Â
// Driver codelet N = 4, S = 3;check(N, S);Â
N = 5, S = 3;check(N, S);Â
// This code is contributed by Yash Agarwal |
Yes: 3, 4 No
Time Complexity: O(1)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
