Skip to content
Related Articles

Related Articles

Maximum number of distinct positive integers that can be used to represent N
  • Last Updated : 31 Mar, 2021

Given an integer N, the task is to find the maximum number of distinct positive integers that can be used to represent N.

Examples: 

Input: N = 5 
Output:
5 can be represented as 1 + 4, 2 + 3, 3 + 2, 4 + 1 and 5. 
So maximum integers that can be used in the representation are 2.

Input: N = 10 
Output:

Approach: We can always greedily choose distinct integers to be as small as possible to maximize the number of distinct integers that can be used. If we are using the first x natural numbers, let their sum be f(x).
So we need to find a maximum x such that f(x) < = n.



1 + 2 + 3 + … n < = n 
x*(x+1)/2 < = n 
x^2+x-2n < = 0 
We can solve the above equation by using quadratic formula X = (-1 + sqrt(1+8*n))/2. 
 

Below is the implementation of the above approach:  

C++




// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to return the required count
int count(int n)
{
    return int((-1 + sqrt(1 + 8 * n)) / 2);
}
 
// Driver code
int main()
{
    int n = 10;
 
    cout << count(n);
 
    return 0;
}

Java




// Java implementation of the approach
class GFG
{
    // Function to return the required count
    static int count(int n)
    {
        return (int)(-1 + Math.sqrt(1 + 8 * n)) / 2;
 
    }
     
    // Driver code
    public static void main (String[] args)
    {
        int n = 10;
     
        System.out.println(count(n));
    }
}
 
// This code is contributed by ihritik

Python3




# Python3 implementation of the approach
from math import sqrt
 
# Function to return the required count
def count(n) :
 
    return (-1 + sqrt(1 + 8 * n)) // 2;
 
# Driver code
if __name__ == "__main__" :
 
    n = 10;
 
    print(count(n));
 
# This code is contributed by AnkitRai01

C#




// C# implementation of approach
using System;
 
class GFG
{
     
    // Function to return the required count
    public static int count(int n)
    {
        return (-1 + (int)Math.Sqrt(1 + 8 * n)) / 2;
    }
 
    // Driver Code
    public static void Main()
    {
        int n = 10;
     
        Console.Write(count(n));
    }
}
 
// This code is contributed by Mohit Kumar

Javascript




<script>
 
// Javascript implementation of the approach
 
// Function to return the required count
function count(n)
{
    return parseInt((-1 + Math.sqrt(1 + 8 * n)) / 2);
}
 
// Driver code
var n = 10;
 
document.write(count(n));
 
// This code is contributed by rutvik_56
 
</script>
Output: 
4

 

Time 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 :