輸入是整數數列N1,N2,N3...,要求輸出是B1,B2,B3..., 其中他們的關系滿足下式
B1 = N2*N3*N4*...
B2 = N1*N3*N4*...
B3 = N1*N2*N4*...
要求用較好的算法實作。
void NtoB(int N[],int B[],int len){ //考慮了數為0的情況
int tmp = 1, i;
for(i = 1; i < len; i++){
if(N[i] == 0){
for(int j = 0; j < i; j++) B[j] = 0;
for(int j = i+1; j < len; j++) B[j] = 0;
for(int j = i+1; j < len; j++){
if(N[j] == 0) {
B[i] = 0;
return;
}
else tmp *= N[j];
}
B[i] = tmp * N[0];
return;
}
else tmp *= N[i];
}
B[0] = tmp;
if (N[0] == 0){
for(int j = 1; j < len; j++) B[j] = 0;
return;
}
else for(int j = 1; j < len; j++) B[j] = B[j-1]/B[j] * B[j-1];
return;
}