On the Subject of Real Math
“Real”, as in, breaking the limits of fractions.
For an explanation of the module see the original manual. This manual does not explain the module, rather describes a solving strategy.
Consider each cell individually, let the reads for this cell be a1, a2, a3 and the multipliers be m1, m2
Compute a1m1 and add a nonnegative integer less than a hundred to it to get a number which ends on a2. Multiply this number by m2 and once again add a nonnegative integer less than a hundred such that it ends on a3. Finally subtract a1m1m2. Refer to this as x.
The original fraction of the cell now has a lower bound of x/m1m2 and an upper bound of (x+1)/m1m2. Look this up in the table on the next page. The submission for this cell will then be (numerator*m1m2 mod denominator) for the numerator, whilst the denominator remains unchanged.
This value is actually unique with 3 stages given so finding the first value higher than the lower bound is actually sufficient. Remember that you can double-check the values.
Repeat this for all cells and you will have solved the module. :D
Example
Suppose that the values we get from the module are a = {48, 18, 21} and m = {79, 83}.
We compute a1m1 and get 3792. To make it end on a 18 we need an additional 26. So now we have 3818. Multiply by m2 and we get 316894. To make this end on 21 we need an additional 27, making our current value 316921. To get x we subtract a1m1m2: x = 316921-48*79*83 = 2185.
Dividing by m1m2 we get 0.3332316608. Finding the first number greater than it we find 1/3. Solving for the numerator we have 1*79*83 % 3 = 2. Meaning that our answer for this cell is 2/3.
You can test the validity this solution by using the value 48+1/3 for a1 multiplying it out. Here we get the sequence 48.33, 3818.33, 316921.66 which matches the read.