Учитывая массив и найти массив продуктов, где каждый элемент массива продуктов вычисляется следующим образом:
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;
}
что-то вроде:
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;
}