本文概述
给定一个整数中号这是一场比赛中进行比赛的次数, 每个参赛队都与其他所有队进行了比赛。任务是查找比赛中有多少支球队。
例子:
输入:M = 3
输出:3
如果有3支球队A, B和C, 则
A将与B和C进行一场比赛
B将与C进行比赛(B已经与A进行比赛)
C已经和A队、B队打过比赛了
比赛总数为3
输入:M = 45
输出:10
方法:由于每场比赛都是在两支球队之间进行。因此, 此问题类似于从给定的N个对象中选择2个对象。因此, 比赛的总数将为C(N, 2), 其中N为参赛球队数。因此,
M = C(N, 2)
M =(N *(N – 1))/ 2
N^2 – N – 2 * M = 0
这是ax^2 + bx + c = 0的二次方程。这里a = 1 b = -1, c = 2 *M。因此, 应用公式
x =(-b + sqrt(b^2 – 4ac))/ 2a和x =(-b – sqrt(b^2 – 4ac))/ 2a
N = [( -1 * -1)+ sqrt((-1 * -1)–(4 * 1 *(-2 * M))))]/2
N =(1 + sqrt(1 +(8 * M))))/ 2和N =(1 – sqrt(1 +(8 * M)))/ 2
求解完上述两个方程序后, 我们将得到两个N值。一个值将为正, 而一个值为负。忽略负值。因此, 团队数量将是上述方程序的正根。
下面是上述方法的实现:
C ++
//C++ implementation of the approach
#include <cmath>
#include <iostream>
using namespace std;
//Function to return the number of teams
int number_of_teams( int M)
{
//To store both roots of the equation
int N1, N2, sqr;
//sqrt(b^2 - 4ac)
sqr = sqrt (1 + (8 * M));
//First root (-b + sqrt(b^2 - 4ac)) /2a
N1 = (1 + sqr) /2;
//Second root (-b - sqrt(b^2 - 4ac)) /2a
N2 = (1 - sqr) /2;
//Return the positive root
if (N1> 0)
return N1;
return N2;
}
//Driver code
int main()
{
int M = 45;
cout <<number_of_teams(M);
return 0;
}
Java
//Java implementation of the approach
import java.io.*;
class GFG
{
//Function to return the number of teams
static int number_of_teams( int M)
{
//To store both roots of the equation
int N1, N2, sqr;
//sqrt(b^2 - 4ac)
sqr = ( int )Math.sqrt( 1 + ( 8 * M));
//First root (-b + sqrt(b^2 - 4ac)) /2a
N1 = ( 1 + sqr) /2 ;
//Second root (-b - sqrt(b^2 - 4ac)) /2a
N2 = ( 1 - sqr) /2 ;
//Return the positive root
if (N1> 0 )
return N1;
return N2;
}
//Driver code
public static void main (String[] args)
{
int M = 45 ;
System.out.println( number_of_teams(M));
}
}
//this code is contributed by vt_m..
Python3
# Python implementation of the approach
import math
# Function to return the number of teams
def number_of_teams(M):
# To store both roots of the equation
N1, N2, sqr = 0 , 0 , 0
# sqrt(b^2 - 4ac)
sqr = math.sqrt( 1 + ( 8 * M))
# First root (-b + sqrt(b^2 - 4ac)) /2a
N1 = ( 1 + sqr) /2
# Second root (-b - sqrt(b^2 - 4ac)) /2a
N2 = ( 1 - sqr) /2
# Return the positive root
if (N1> 0 ):
return int (N1)
return int (N2)
# Driver code
def main():
M = 45
print (number_of_teams(M))
if __name__ = = '__main__' :
main()
# This code has been contributed by 29AjayKumar
C#
//C# implementation of the approach
using System;
class GFG
{
//Function to return the number of teams
static int number_of_teams( int M)
{
//To store both roots of the equation
int N1, N2, sqr;
//sqrt(b^2 - 4ac)
sqr = ( int )Math.Sqrt(1 + (8 * M));
//First root (-b + sqrt(b^2 - 4ac)) /2a
N1 = (1 + sqr) /2;
//Second root (-b - sqrt(b^2 - 4ac)) /2a
N2 = (1 - sqr) /2;
//Return the positive root
if (N1> 0)
return N1;
return N2;
}
//Driver code
public static void Main()
{
int M = 45;
Console.WriteLine( number_of_teams(M));
}
}
//This code is contributed by Ryuga
的PHP
<?php
//PHP implementation of the approach
//Function to return the number of teams
function number_of_teams( $M )
{
//To store both roots of the equation
//sqrt(b^2 - 4ac)
$sqr = sqrt(1 + (8 * $M ));
//First root (-b + sqrt(b^2 - 4ac)) /2a
$N1 = (1 + $sqr ) /2;
//Second root (-b - sqrt(b^2 - 4ac)) /2a
$N2 = (1 - $sqr ) /2;
//Return the positive root
if ( $N1> 0)
return $N1 ;
return $N2 ;
}
//Driver code
$M = 45;
echo number_of_teams( $M );
//This code is contributed
//by chandan_jnu
?>
输出如下:
10