计算C ++中数组乘积中尾随零的数目

给我们一个大小为N的正整数的数组Arr []。目标是计算出现在数组所有元素乘积中的尾随零的数量。

我们将通过计算每个数字的系数来做到这一点。我们将2和5作为每个数的因数,因为2和5的乘积为10,这将得出1尾随的0。最后,无论哪个计数较小,都会得出乘积中的尾随零的计数。如果我们有4个2和6个5,那么乘积中将有4个尾随零-2 * 2 * 2 * 2 * 5 * 5 * 5 * 5 * 5 * 5 * 5 = 250000

让我们通过示例来理解。

输入值 

Arr[] = { 2, 5, 10, 15, 20, 25, 100 }

输出结果 

Number of trailing zeroes : 6

说明 

Factors 2 and 5 of each element of Arr[]:

Arr[0] = 2 : 2 twos=1, fives=0

Arr[1] = 5 : 5 twos=1, fives=1

Arr[2] = 10 : 2*5 twos=2, fives=2

Arr[3] = 15 : 3*5 twos=2, fives=3

Arr[4] = 20 : 2*2*5 twos=4, fives=4

Arr[5] = 25 : 5*5 twos=4, fives=6

Arr[6] = 100 : 2*2*5*5 twos=6, fives=8

Count of 2 is less so trailing zeroes will be 6.

输入值 

Arr[] = { 10,10,10,10,10 }

输出结果 

Number of trailing zeroes : 5

说明 

Factors 2 and 5 of each element of Arr[]:

Arr[0] = 10 : 2*5 twos=1, fives=1

Arr[1] = 10 : 2*5 twos=2, fives=2

Arr[2] = 10 : 2*5 twos=3, fives=3

Arr[3] = 10 : 3*5 twos=4, fives=4

Arr[4] = 10 : 2*5 twos=5, fives=5

Count of 2 and 5 is equal so trailing zeroes will be 5.

以下程序中使用的方法如下

  • 我们采用长度为N的正整数数组。

  • 函数TrailZeros(int arr [],int n)将数组和n作为输入,并返回所有元素乘积中的尾随零数。

  • 对于数字零,将初始变量计数设为0。

  • 取两个变量二和五作为2和5的计数。

  • 使用for循环遍历数组。

  • 对于每个元素,如果可以将其除以2或5,则将其加二和五,然后将其减少2或5。

  • 在for循环结束时,请检查2或5的数值,以较小者为准。

  • 用两者中的较低者初始化计数。

  • 返回计数结果。

示例

#include <bits/stdc++.h<

using namespace std;

int trailZeros(int arr[],int n){

   int count = 0;

   int twos = 0;

   int fives = 0;

   for (int i = 0; i < n; i++){

      while(arr[i]%2==0 || arr[i]%5==0){

         if(arr[i]%2==0){

            arr[i]=arr[i]/2;

            twos++;

         }

         if(arr[i]%5==0){

            arr[i]=arr[i]/5;

            fives++;

         }

      }

   }

   count=twos<fives?twos:fives;

   return count;

}

int main(){

   int Arr[]={ 12, 5 , 15, 8, 100, 40 };

   int Length= sizeof(Arr)/sizeof(Arr[0]);

   cout <<endl<< "Number of trailing zeroes : "<<trailZeros(Arr,Length);

   return 0;

}

输出结果

如果我们运行上面的代码,它将生成以下输出-

Number of trailing zeroes : 5

以上是 计算C ++中数组乘积中尾随零的数目 的全部内容, 来源链接: utcz.com/z/331444.html

回到顶部