给定一个数组arr [] ,它表示多项式的整数系数,任务是找到多项式的内容。
Content of polynomials with integer coefficients is defined as the greatest common divisor of its integer coefficients.
That is for:
F(x) = amxm + am-1xm-1 + ……..+a1x + a0
Then, Content of Polynomial = gcd(am, am-1, am-2…., a1, a0)
例子:
Input: arr[] = {9, 30, 12}
Output: 3
Explanation:
Given Polynomial can be: 9x2 + 30x + 12
Therefore, Content = gcd(9, 30, 12) = 3
Input: arr[] = {2, 4, 6}
Output: 2
方法:想法是找到阵列中所有元素的最大公约数,这可以通过一次选择两个元素来反复查找GCD来计算。那是:
gcd(a, b, c)
= gcd(gcd(a, b), c)
= gcd(a, gcd(b, c))
= gcd(gcd(a, c), b)
下面是上述方法的实现:
C++
// C++ implementation to find the
// content of the polynomial
#include
using namespace std;
#define newl "\n"
#define ll long long
#define pb push_back
// Function to find the content
// of the polynomial
int findContent(int arr[], int n)
{
int content = arr[0];
// Loop to iterate over the
// elements of the array
for (int i = 1; i < n; i++) {
//__gcd(a, b) is a inbuilt
// function for Greatest
// Common Divisor
content = __gcd(content, arr[i]);
}
return content;
}
// Driver Code
int main()
{
int n = 3;
int arr[] = { 9, 6, 12 };
// Function call
cout << findContent(arr, n);
return 0;
}
Java
// Java implementation to find the
// content of the polynomial
class GFG{
// Function to find the content
// of the polynomial
static int findContent(int arr[], int n)
{
int content = arr[0];
// Loop to iterate over the
// elements of the array
for(int i = 1; i < n; i++)
{
//__gcd(a, b) is a inbuilt
// function for Greatest
// Common Divisor
content = __gcd(content, arr[i]);
}
return content;
}
static int __gcd(int a, int b)
{
return b == 0 ? a : __gcd(b, a % b);
}
// Driver Code
public static void main(String[] args)
{
int n = 3;
int arr[] = { 9, 6, 12 };
// Function call
System.out.print(findContent(arr, n));
}
}
// This code is contributed by sapnasingh4991
Python3
# Python3 implementation to find the
# content of the polynomial
from math import gcd
# Function to find the content
# of the polynomial
def findContent(arr, n):
content = arr[0]
# Loop to iterate over the
# elements of the array
for i in range(1, n):
# __gcd(a, b) is a inbuilt
# function for Greatest
# Common Divisor
content = gcd(content, arr[i])
return content
# Driver Code
if __name__ == '__main__':
n = 3
arr = [ 9, 6, 12 ]
# Function call
print(findContent(arr, n))
# This code is contributed by mohit kumar 29
C#
// C# implementation to find the
// content of the polynomial
using System;
class GFG{
// Function to find the content
// of the polynomial
static int findContent(int []arr, int n)
{
int content = arr[0];
// Loop to iterate over the
// elements of the array
for(int i = 1; i < n; i++)
{
//__gcd(a, b) is a inbuilt
// function for Greatest
// Common Divisor
content = __gcd(content, arr[i]);
}
return content;
}
static int __gcd(int a, int b)
{
return b == 0 ? a : __gcd(b, a % b);
}
// Driver Code
public static void Main(String[] args)
{
int n = 3;
int []arr = { 9, 6, 12 };
// Function call
Console.Write(findContent(arr, n));
}
}
// This code is contributed by PrinciRaj1992
输出:
3