The first three are rather easy. You can use the straightforward algorithms you learned in elementary school. I'll give an example with addition assuming that the vectors have the lowest order digits in the smaller indexes (e.g. the number 1234 would be stored in an array like [4 3 2 1], though resizable since it's a vector).
First, get the length of the vectors (i.e. the number of digits in each number you want to add). Let's say I'm computing 1234 + 50. The lengths of these numbers are 4 and 2. The length of the output can be at most 5 digits, so for generality I should loop 5 times (or rather, max(length(n1), length(n2)) + 1 in pseudocode).
Heck, I'll just write it in pseudocode from here:
public Vector add (Vector n1, Vector n2) {
int carry = 0;
Vector sum = new Vector();
for (int k = 0; k < max(n1.length, n2.length) + 1; k++) {
....int s = n1[k] + n2[k] + carry;
....sum[k] = s % 10;
....carry = s / 10;
}
return sum;
}
(I'm using the dots for indentation only, since I think the attach code feature is still broken.)
Basically, you just keep track of the carry and keep adding things through. Depending on your vector implementation, this may need to change. I'm assuming that indexing a higher order bit for a number that isn't large enough to have that bit non-zero will return zero (it should if these vectors are just being used for math). If it doesn't, you'll need an extra check for that.
EDIT: Changed index from i to k to avoid italics.