Supercalculator Design and Implement an object (struct/class) that represents positive integers with an unlimited number of digits, and provides the four basic arithmetic operations of add, subtract, multiply, and divide. There should also be a print method and suitable constructor(s), a destructor, and a factorial function. This assignment is in two parts. Division is much more difficult to get right than the other operations. For part 1, you don't need to implement division at all. Example use: you don't have to conform to this example exactly, but be close in spirit at least. { bignum * a = new bignum("123456"); bignum * b = new bignum("10000000000001000000000001"); bignum * c = new bignum("13"); bignum * d = add(multiply(a, b), c); bignum * e = factorial(new bignum("7")) d->print(); cout << "\n 7! = "; e->print(); should print 1234560000000123456000000123469 5040 As a test sample, this is the factorial of 500: 12201368259911100687012387854230469262535743428031 92842192413588385845373153881997605496447502203281 86301361647714820358416337872207817720048078520515 93292854779075719393306037729608590862704291745478 82424912726344305670173270769461062802310452644218 87878946575477714986349436778103764427403382736539 74713864778784954384895955375379904232410612713269 84327745715546309977202781014561081188373709531016 35632443298702956389662891165897476957208792692887 12817800702651745077684107196243903943225364226052 34945850129918571501248706961568141625359056693423 81300885624924689156412677565448188650659384795177 53608940057452389403357984763639449053130623237490 66445048824665075946735862074637925184200459369692 98102226397195259719094521782333175693458150855233 28207628200234026269078983424517120062077146409794 56116127629145951237229913340169552363850942885592 01872743379517301458635757082835578015873543276888 86801203998823847021514676054454076635359841744304 80128938313896881639487469658817504506926365338175 05547812864000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000 it has 1135 digits, the last 124 are all zeros. Do not #include . Your big numbers should certainly store their digits in the way that a vector stores things, but you should implement the mechanism yourself. Unless you get really stuck. If you just can't get it working, you can #include , but there will be a non-trivial penalty in the grade. Part 2: Add a division operation (whole numbers only) and the ability to handle negative numbers. Hint: keep your simple add, subtract, multiply, etc functions that assume everything is positive. They will do all the work. Just make new functions that look at the signs of the inputs, use the old functions, and adjust the results accordingly.