本文概述
- C ++
- Java
- Python3
- C#
- 的PHP
例子:
输入:M = 3方法:由于每场比赛都是在两支球队之间进行。因此, 此问题类似于从给定的N个对象中选择2个对象。因此, 比赛的总数将为C(N, 2), 其中N为参赛球队数。因此,
输出:3
如果有3支球队A, B和C, 则
A将与B和C进行一场比赛
B将与C进行比赛(B已经与A进行比赛)
C已经和A队、B队打过比赛了
比赛总数为3
输入:M = 45
输出:10
M = C(N, 2)求解完上述两个方程序后, 我们将得到两个N值。一个值将为正, 而一个值为负。忽略负值。因此, 团队数量将是上述方程序的正根。
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
下面是上述方法的实现:
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
推荐阅读
- 通过简单的示例了解时间复杂性(通俗理解)
- 如果子元素有CSS,如何将样式应用于父项()
- ML中的DBSCAN集群|基于密度的聚类
- 如何在不使用循环的情况下打印1到100之间的数字(|S2)
- 算法题(如何用一个数字替换另一个数字())
- Floyd Warshall算法原理和实现|DP-16
- 用Python打印列表(4种不同方式)
- 8086微处理器中的寻址模式
- 让老系统换新装 WindowsXP用上Windows7的任务栏