создать продукт Array, который содержит произведение всех элементов массива, которые делятся на A [i] без использования оператора деления

0

Учитывая массив и найти массив продуктов, где каждый элемент массива продуктов вычисляется следующим образом:

B[i] = product of all the element of A which are divisible by A[i]

без использования оператора деления.

например A = {2,4,3,7,8} Array = {32,8,0,0,0}

Я пытаюсь решить с использованием подхода O (n2). Для каждого числа я ищу массив и проверяю, делится ли он заданным числом или не использует (операция вычитания я выполнил деление), затем умножьте все эти числа.

bool division(int x,int y){
  while(x>=y){
    x=x-y;
  }  
  if(x!=0)
    return false;
  else
    return true;
}

int main()
{

  int n=5;
  int A[]={2,4,3,7,8};
  int prod[5];
  int mul=1;
  for(int i=0;i<n;i++){
    mul=1;
    for(int j=0;j<n;j++) 
    {
      if(i!=j)
      {
         bool isdivisible=division(A[j],A[i]); 
         if(isdivisible==1)
         {
            mul=mul*A[j];
         }
      }
    }
    if(mul!=1)
      prod[i]=mul;
    else
      prod[i]=0;
  }
  for(int k=0;k<n;k++)
    cout<<prod[k]<<endl;
  return 0;
}
  • 0
    Пожалуйста, покажите свою попытку.
  • 0
    Тогда используйте оператор%. :)
Показать ещё 8 комментариев
Теги:
arrays
algorithm
division

1 ответ

0

что-то вроде:

std::vector<int> do_stuff(const std::vector<int>& a)
{
    std::vector<int> out(a.size(), 0);
    const int len = a.size();

    for (int i=0; i<len; i++)
    {
        out[i] = 1;

        for (int k=0; k<len; k++)
            if (i != k && a[k] % a[i] == 0)
                out[i] *= a[k];
    }

    return out;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню