Arranging Coins - Codeprg

Breaking

programing News Travel Computer Engineering Science Blogging Earning

Thursday 20 August 2020

Arranging Coins

Arranging Coins


 Arranging Coins

You have a total of n coins that you want to form in a staircase shape, where every k-th row must have exactly k coins.

Given n, find the total number of full staircase rows that can be formed.

n is a non-negative integer and fits within the range of a 32-bit signed integer.

Example 1:

n = 5

The coins can form the following rows:
¤
¤ ¤
¤ ¤

Because the 3rd row is incomplete, we return 2.

Example 2:

n = 8

The coins can form the following rows:
¤
¤ ¤
¤ ¤ ¤
¤ ¤

Because the 4th row is incomplete, we return 3.
class Solution {
public:
    bool canbe(long long int l,int n)
    {
        long long  int k=(l*(l+1))/2 ;
        return k<=n;
    }
    int arrangeCoins(int n) {
        // int i=1,cnt=0;
        // while(i<=n)
        // {
        //     n-=i;
        //     ++i;
        // }
        // return i-1;
        
        if(n==1||n==0)return n;
        int l=1,h=5000000,cnt=0;
        while(l<=h)
        {
           long long mid=(l+h)/2;
            if(canbe(mid,n))
            {
              cnt=mid,l=mid+1;
            }else{
                h=mid-1;
            }
            
        }
        return cnt;
    }
};