算法设计(给定比赛次数,查找比赛中的球队数)

本文概述

  • C ++
  • Java
  • Python3
  • C#
  • 的PHP
给定一个整数中号这是一场比赛中进行比赛的次数, 每个参赛队都与其他所有队进行了比赛。任务是查找比赛中有多少支球队。
例子:
输入: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

    推荐阅读