# /* Kim Slava KarKtl 2009 */

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156``` ```/* code for long mathematics */ /* Kim Slava KarKtl 2009 */ /* (c) Don't copy :) */ /* ------------------------------------------------------------------------- Some documentation: * code is homemade :) * if code isn't extrafast, it means I could do any more * one book helped me whith code * www.agolist.manual.ru - my favourite site of algorithms * to change countsystem and array size change constants BASE and ARRAYSIZE * using functions are like : changingnumber.function(usingnamber), first one will be changed -------------------------------------------------------------------------- */ /*<---code starts here--->*/ #include #include using namespace std; #define BASE 10 //in which system will be numbers used #define ARRAYSIZE 100 //how much elements are in one array class H { public: H(); //general==v void enter (); short read (int i); void print (); //math actions==v void plus (H); void minus (H); void multiply (H); void divide (H); void mod (H); //math using short numbers==v void smul (long long); void sdiv (long long); // short body[ARRAYSIZE]; private: short size; }; H::H(){ for(int i=0;i>str; size=strlen(str); for(j=0,i=strlen(str)-1;j=0;j++,i--){ body[j]=(int)str[i]-48; } } short H::read (int i=-1){ if(i=-1)return size; else return body[i]; } void H::print () { for(int i=size-1;i>=0;i--){ cout<size)size=second.read(); for(int i=0;i=BASE){body[i]-=BASE;body[i+1]++;} } if(body[size]!=0)size++; } void H::minus (H second) { if(second.read()>size)size=second.read(); for(int i=0;i=BASE){ int temp=tarr[ia+ib]%BASE; tarr[ia+1+ib]+=(tarr[ia+ib]-temp)/BASE; tarr[ia+ib]=temp; //if element is bigger than 10 } tsize=ia+ib; //is array size changed? He looks for it! } } size=tsize+1; for (int i=0;i*/ /* code for long mathematics */ /* Kim Slava KarKtl 2009 */ /* (c) Don't copy :) */ ```