Найдите, является ли данное число суммой первых n натуральных чисел

Опубликовано: 18 Января, 2022

Дано число s (1 <= s <= 1000000000). Если это число является суммой первых n натуральных чисел, то выведите, иначе выведите -1.
Примеры:

 Ввод: s = 10
Выход: n = 4
Объяснение:
1 + 2 + 3 + 4 = 10

Ввод: s = 17
Выход: n = -1
Объяснение:
17 не может быть выражено как 
сумма последовательных от 1.

Метод 1 (простой):

Начните складывать числа от i = 1 до n.

  • Проверяем, равна ли сумма n, возвращаем i.
  • В противном случае, если сумма> n, верните -1.

Below is the implementation of the above approach:

C++

// C++ program for above implementation
#include <iostream>
using namespace std;
 
// Function to find no. of elements
// to be added from 1 to get n
int findS(int s)
{
    int sum = 0;
 
    // Start adding numbers from 1
    for (int n = 1; sum < s; n++) {
        sum += n;
 
        // If sum becomes equal to s
        // return n
        if (sum == s)
            return n;
    }
 
    return -1;
}
 
// Drivers code
int main()
{
    int s = 15;
    int n = findS(s);
    n == -1 ? cout << "-1"
            : cout << n;
 
    return 0;
}

Java

// Java program for above implementation
class GFG {
     
    // Function to find no. of elements
    // to be added from 1 to get n
    static int findS(int s)
    {
        int sum = 0;
 
        // Start adding numbers from 1
        for (int n = 1; sum < s; n++)
        {
            sum += n;
     
            // If sum becomes equal to s
            // return n
            if (sum == s)
                return n;
        }
 
        return -1;
    }
 
    // Drivers code
    public static void main(String[]args)
    {
         
        int s = 15;
        int n = findS(s);
        if(n == -1)
            System.out.println("-1");
        else
            System.out.println(n);
    }
}
 
//This code is contributed by Azkia Anam.

Python3

# Python3 program to check if
# given number is sum of first n
# natural numbers
 
# Function to find no. of elements
# to be added from 1 to get n
def findS (s):
    _sum = 0
    n = 1
     
    # Start adding numbers from 1
    while(_sum < s):
        _sum += n
        n+=1
    n-=1
     
    # If sum becomes equal to s
    # return n
    if _sum == s:
        return n
    return -1
 
# Driver code
s = 15
n = findS (s)
if n == -1:
    print("-1")
else:
    print(n)
 
# This code is contributed by "Abhishek Sharma 44".

C#

// C# program for above implementation
using System;
 
class GFG {
     
    // Function to find no. of elements
    // to be added from 1 to get n
    static int findS(int s)
    {
        int sum = 0;
 
        // Start adding numbers from 1
        for (int n = 1; sum < s; n++)
        {
            sum += n;
     
            // If sum becomes equal to s
            // return n
            if (sum == s)
                return n;
        }
 
        return -1;
    }
 
    // Drivers code
    public static void Main()
    {
         
        int s = 15;
        int n = findS(s);
         
        if(n == -1)
            Console.WriteLine("-1");
        else
            Console.WriteLine(n);
    }
}
 
// This code is contributed by vt_m.

PHP

<?php
// PHP program for above implementation
 
// Function to find no. of elements
// to be added from 1 to get n
function findS($s)
{
    $sum = 0;
 
    // Start adding numbers from 1
    for ($n = 1; $sum < $s; $n++)
    {
        $sum += $n;
 
        // If sum becomes equal
        // to s return n
        if ($sum == $s)
            return $n;
    }
 
    return -1;
}
 
// Drivers code
$s = 15;
$n = findS($s);
if($n == -1)
echo "-1";
else
echo $n;
 
// This code is contributed by Sam007
?>

Javascript

<script>
 
// Javascript program for above implementation   
 
// Function to find no. of elements
// to be added from 1 to get n
    function findS(s) {
        var sum = 0;
 
        // Start adding numbers from 1
        for (n = 1; sum < s; n++) {
            sum += n;
 
            // If sum becomes equal to s
            // return n
            if (sum == s)
                return n;
        }
 
        return -1;
    }
 
    // Drivers code
     
 
        var s = 15;
        var n = findS(s);
        if (n == -1)
            document.write("-1");
        else
            document.write(n);
 
// This code is contributed by Rajput-Ji
 
</script>
Output

5