A few weeks ago I wrote a comment here on HN with the details of the Roman arithmetics. I’ll copy/paste it here.

————————————-

You often hear that it was next to impossible to calculate with Roman numerals. That's not true at all. People developed a very ingenious scheme to do additions and multiplications using pebbles. Since the word for pebble in Latin is calculus, we now call calculus calculus.
How did it go? You represented the digits of a number by a pebble. You drew some lines in the sand, some rows and columns. The rows represented the digit magnitude (I, V, X, etc). The columns were for the operands. Two columns for a number. Why two? Because Roman numerals sometimes use negative digits.
Let's see a concrete example. You want to do the addition 28+44. That is XXVIII + XLIV.
You first draw the lines and put the pebbles in the corresponding squares. Note that XLIV has two negative digits (44 = XLIV = -10 + 50 -1 + 5). So the pebble for 10 and the one for 1 are put on the left side.
The first number does not have any negative digits, so no pebbles in its left column.

———————————————————————————————
L | || | o
X | oo || o |
———————————————————————————————
V | o || | o
I | ooo || o |
———————————————————————————————

So, now that we set the pebbles, we need to do the calculation. We can do it in many ways. Let's start by first canceling the digits that can be canceled: a positive 10 pebble with a negative 10 pebble, and a positive 1 pebble with a negative 1 pebble. The table looks now like this:

———————————————————————————————
L | || | o
X | o || |
———————————————————————————————
V | o || | o
I | oo || |
———————————————————————————————

At this point we reduced the initial addition 28 + 44 (XXVIII + XLIV) to the equivalent one XVII + LV ( 17 + 55).
Now we just move the pebbles from the fourth column to the second column.

———————————————————————————————
L | o || |
X | o || |
———————————————————————————————
V | oo || |
I | oo || |
———————————————————————————————

We are almost done. We got the result as LXVVII. But this is not a valid Roman numeral, we need to do the simplification VV = X. We remove the two 5-pebbles and add a 10-pebble. Oh, and let's get rid of the last 2 columns.

————————————————
L | o ||
X | oo ||
————————————————
V | ||
I | oo ||
————————————————

So now our final result, in correct form, is LXXII, or 72.
Multiplication can be also performed, and it's quite a lot of fun. I'll explain it in the post below.

Multiplication of Roman numerals.
Here we need 3 columns, one each for the multiplicands and one for the result.
Our example will be 12 * 61 = XII * LXI. I chose this example so that we don't need to use negative digits; negative digits can be handled easily, but you can get the idea without them.
We start with the operands on the first two columns. 12 has one pebble at the X row and 2 at the units row; 61 has one pebble at the L row, one at the X row and one at the I row. The column for the result is now empty.

D | ||
C | ||
———————————————
L | o ||
X o | o ||
———————————————
V | ||
I oo| o ||
———————————————

We start removing pebbles from the first multiplicand. For each pebble in the multiplicand, we perform the multiplication with the second multiplicand, which in our case means we "copy" the multiplicand in the results column with an appropriate shift in rows. Since the first mutiplicand has 3 pebbles, there are three steps:
Step 1:

D | ||
C | ||
———————————————-
L | o || o
X o | o || o
———————————————-
V | ||
I o | o || o
———————————————-

Step 2:

D | ||
C | ||
———————————————-
L | o || oo
X o | o || oo
———————————————-
V | ||
I | o || oo
———————————————-

Step 3:

D | || o
C | || o
———————————————-
L | o || oo
X | o || oo o
———————————————-
V | ||
I | o || oo
———————————————-

So, the result is DCLLXXXII. Of course, LL is not really "legal", so we replace it with a C, so we get DCCXXXII, or 732, which is indeed the correct number.