Difference between revisions of "TADM2E 3.28"

From Algorithm Wiki
Jump to: navigation, search
(This media wiki supports <source>, which is nice.)
(Replaced content with "We need fast wifi")
Line 1: Line 1:
We need two passes over X:
+
We need fast wifi
 
+
1. Calculate cumulative production P and Q:<br>
+
<math>P_0 = 1, P_k=X_k P_{k-1}=\prod_{i=1}^kx_i</math><br>
+
<math>Q_n = 1, Q_k=X_k Q_{k+1}=\prod_{i=k}^nx_i</math>
+
 
+
2. Calculate M:<br>
+
<math>M_k=P_{k-1}Q_{k+1}, k\in[1,n]</math>
+
-------------------------------------------------------------------------------------
+
Using Iteration:
+
 
+
Java example:
+
<source lang="java">
+
public class Multiplication {
+
  public static int[] product(int[] x) {
+
    int[] M = new int[x.length];
+
 
+
    for (int i = 0; i < x.length; i++) {
+
      M[i] = product(x, M, i + 1, x.length);
+
    }
+
 
+
    return M;
+
  }
+
 
+
  private static int product(int[] x, int[] y, int i, int length) {
+
    if (i == length)
+
      return productLeft(x, i - 2, length);
+
 
+
    return x[i] * productLeft(x, i - 2, length) * productRight(x, i + 1, length);
+
  }
+
 
+
  private static int productLeft(int[] x, int i, int length) {
+
    if (i < 0)
+
      return 1;
+
 
+
    return x[i] * productLeft(x, i - 1, length);
+
  }
+
 
+
  private static int productRight(int[] x, int i, int length) {
+
    if (i >= length)
+
      return 1;
+
 
+
    return x[i] * productRight(x, i + 1, length);
+
  }
+
}
+
</source>
+
 
+
--[[User:Tnoumessi|Tnoumessi]] ([[User talk:Tnoumessi|talk]]) 00:21, 8 April 2015 (EDT)
+

Revision as of 01:41, 14 July 2020

We need fast wifi