给定矩阵每一行的 GCD 总和
给定一个大小为N * N的矩阵mat[][] ,任务是找到给定矩阵所有行的 GCD 的总和。
例子:
Input: arr[][] = {
{2, 4, 6, 8},
{3, 6, 9, 12},
{4, 8, 12, 16},
{5, 10, 15, 20}};
Output: 14
gcd(2, 4, 6, 8) = 2
gcd(3, 6, 9, 12) = 3
gcd(4, 8, 12, 16) = 4
gcd(5, 10, 15, 20) = 5
2 + 3 + 4 + 5 = 14
Input: arr[][] = {
{1, 1, 1, 1},
{2, 2, 2, 2},
{3, 3, 3, 3},
{4, 4, 4, 4}};
Output: 10
方法:求矩阵每一行的GCD,并将其加到总和中。总和将是所有行的 GCD 的总和。
下面是上述方法的实现:
C++
// C++ implementation of the approach
#include
using namespace std;
// Function to return gcd of a and b
int gcd(int a, int b)
{
if (a == 0)
return b;
return gcd(b % a, a);
}
// Function to return the sum of gcd
// of each row of the given matrix
int sumGcd(int arr[][4], int n)
{
// To store the required sum
int sum = 0;
for (int i = 0; i < n; i++) {
// To store the gcd of the current row
int gcdRow = arr[i][0];
for (int j = 1; j < n; j++)
gcdRow = gcd(arr[i][j], gcdRow);
// Add gcd of the current row to the sum
sum += gcdRow;
}
// Return the required sum
return sum;
}
// Driver code
int main()
{
int arr[][4] = { { 2, 4, 6, 8 },
{ 3, 6, 9, 12 },
{ 4, 8, 12, 16 },
{ 5, 10, 15, 20 } };
int size = sizeof(arr) / sizeof(arr[0]);
cout << sumGcd(arr, size);
return 0;
}
Java
// Java implementation of the approach
class GFG
{
// Function to return gcd of a and b
static int gcd(int a, int b)
{
if (a == 0)
return b;
return gcd(b % a, a);
}
// Function to return the sum of gcd
// of each row of the given matrix
static int sumGcd(int arr[][], int n)
{
// To store the required sum
int sum = 0;
for (int i = 0; i < n; i++)
{
// To store the gcd of the current row
int gcdRow = arr[i][0];
for (int j = 1; j < n; j++)
gcdRow = gcd(arr[i][j], gcdRow);
// Add gcd of the current row to the sum
sum += gcdRow;
}
// Return the required sum
return sum;
}
// Driver code
public static void main (String[] args)
{
int arr[][] = { { 2, 4, 6, 8 },
{ 3, 6, 9, 12 },
{ 4, 8, 12, 16 },
{ 5, 10, 15, 20 } };
int size = arr.length ;
System.out.println(sumGcd(arr, size));
}
}
// This code is contributed by AnkitRai01
Python3
# Python3 implementation of the approach
# Function to return gcd of a and b
def gcd(a, b):
if (a == 0):
return b
return gcd(b % a, a)
# Function to return the Sum of gcd
# of each row of the given matrix
def SumGcd(arr, n):
# To store the required Sum
Sum = 0
for i in range(n):
# To store the gcd of the current row
gcdRow = arr[i][0]
for j in range(1,n):
gcdRow = gcd(arr[i][j], gcdRow)
# Add gcd of the current row to the Sum
Sum += gcdRow
# Return the required Sum
return Sum
# Driver code
arr= [ [ 2, 4, 6, 8 ],
[ 3, 6, 9, 12 ],
[ 4, 8, 12, 16 ],
[ 5, 10, 15, 20 ] ]
size = len(arr)
print(SumGcd(arr, size))
# This code is contributed by mohit kumar 29
C#
// C# implementation of the approach
using System;
class GFG
{
// Function to return gcd of a and b
static int gcd(int a, int b)
{
if (a == 0)
return b;
return gcd(b % a, a);
}
// Function to return the sum of gcd
// of each row of the given matrix
static int sumGcd(int [ , ]arr, int n)
{
// To store the required sum
int sum = 0;
for (int i = 0; i < n; i++)
{
// To store the gcd of the current row
int gcdRow = arr[i, 0];
for (int j = 1; j < n; j++)
gcdRow = gcd(arr[i, j], gcdRow);
// Add gcd of the current row to the sum
sum += gcdRow;
}
// Return the required sum
return sum;
}
// Driver code
public static void Main ()
{
int [ , ] arr = new int[ 4, 4 ]{{ 2, 4, 6, 8 },
{ 3, 6, 9, 12 },
{ 4, 8, 12, 16 },
{ 5, 10, 15, 20 }};
int size = 4;
Console.WriteLine(sumGcd(arr, size));
}
}
// This code is contributed by ihritik
PHP
Javascript
输出:
14
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。