#include <stdio.h>
typedef unsigned int Uint;
#define N 100
#define DP 1
//RADIX == 10^LOG
#define LOG 1
#define RADIX 10
typedef Uint Liczba[N+1];
void plus( Liczba a, Liczba b){ // a[]:=a[]+b[]
for( Uint c=0, i=N; i>0; i-- ){
c += a[i]+b[i];
a[i] = c % RADIX;
c /= RADIX;}}
void minus( Liczba a, Liczba b ) { // a[]:=a[]-b[]
for( Uint c=0, i=N; i>0; i-- ){
c += b[i];
if( a[i]<c ){
a[i] = RADIX + a[i] - c; c=1; }
else {
a[i] -= c; c=0; }}}
void razyU( Liczba a, Uint b ) { // a[]:=a[] * b
for( Uint c=0,i=N; i>0; i-- ){
c += a[i]*b;
a[i]= c % RADIX;
c /= RADIX; }}
void podzielU( Liczba a, Uint b ) { // a[]:=a[] / b
for( Uint c=0, i=1; i<=N ) {
c = c*RADIX+a[i];
a[i]= c/RADIX;
c %= RADIX;}}
void wstaw( Liczba a, Uint b ) { // a[]:= b
Uint i;
for( i=0; i<=N; i++ ) a[i]=0;
i=DP;
while( b ) {
a[i--] = b%RADIX; b /= RADIX; }}
void pisz( Liczba a ){ Uint i;
for( i
=2; i
<DP
; i
++ ) printf("%0*u", LOG
, a
[i
]); for( ; i
<=N
; i
++ ) printf("%0*u", LOG
, a
[i
]); }
int main(void) {
Liczba
a={0,1,0,9,0}, // 1.09
b={0,2,0,5,1}; // 2.051
plus
( a
, b
); pisz
(a
); puts(""); razyU
( a
, 5 ); pisz
(a
); puts(""); podzielU
( a
, 3 ); pisz
(a
); puts(""); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp0eXBlZGVmIHVuc2lnbmVkIGludCBVaW50OwojZGVmaW5lIE4gMTAwCiNkZWZpbmUgRFAgMQovL1JBRElYID09IDEwXkxPRwojZGVmaW5lIExPRyAxCiNkZWZpbmUgUkFESVggMTAKdHlwZWRlZiBVaW50IExpY3piYVtOKzFdOwogCnZvaWQgcGx1cyggTGljemJhIGEsIExpY3piYSBiKXsgICAgICAgICAgICAgICAgICAvLyBhW106PWFbXStiW10KCWZvciggVWludCBjPTAsIGk9TjsgaT4wOyBpLS0gKXsKCQljICs9IGFbaV0rYltpXTsKCQlhW2ldID0gYyAlIFJBRElYOwoJCWMgLz0gUkFESVg7fX0KCnZvaWQgbWludXMoIExpY3piYSBhLCBMaWN6YmEgYiApIHsgICAgICAgICAgICAgICAvLyBhW106PWFbXS1iW10KCWZvciggVWludCBjPTAsIGk9TjsgaT4wOyBpLS0gKXsKCQljICs9IGJbaV07CgkJaWYoIGFbaV08YyApewoJCQlhW2ldID0gUkFESVggKyBhW2ldIC0gYzsgYz0xOyB9CgkJZWxzZSB7CgkJCWFbaV0gLT0gYzsgYz0wOyB9fX0KCnZvaWQgcmF6eVUoIExpY3piYSBhLCBVaW50IGIgKSB7ICAgICAgICAgICAgICAgICAvLyBhW106PWFbXSAqIGIKCWZvciggVWludCBjPTAsaT1OOyBpPjA7IGktLSApewoJCWMgKz0gYVtpXSpiOwoJCWFbaV09IGMgJSBSQURJWDsKCQljIC89IFJBRElYOyB9fQoKdm9pZCBwb2R6aWVsVSggTGljemJhIGEsIFVpbnQgYiApIHsgICAgICAgICAgICAgIC8vIGFbXTo9YVtdIC8gYgoJZm9yKCBVaW50IGM9MCwgaT0xOyBpPD1OICkgewoJCWMgPSBjKlJBRElYK2FbaV07CgkJYVtpXT0gYy9SQURJWDsKCQljICU9IFJBRElYO319Cgp2b2lkIHdzdGF3KCBMaWN6YmEgYSwgVWludCBiICkgeyAgICAgICAgICAgICAgICAgLy8gYVtdOj0gYgoJVWludCBpOwoJZm9yKCBpPTA7IGk8PU47IGkrKyApIGFbaV09MDsKCWk9RFA7Cgl3aGlsZSggYiApIHsKCQlhW2ktLV0gPSBiJVJBRElYOyBiIC89IFJBRElYOyB9fQoKdm9pZCBwaXN6KCBMaWN6YmEgYSApeyBVaW50IGk7CglwcmludGYoIiUqdSIsIExPRywgYVsxXSk7Cglmb3IoIGk9MjsgaTxEUDsgaSsrICkgcHJpbnRmKCIlMCp1IiwgTE9HLCBhW2ldKTsKCXB1dGNoYXIoJy4nKTsKCWZvciggICAgOyBpPD1OOyBpKysgKSBwcmludGYoIiUwKnUiLCBMT0csIGFbaV0pOyB9CgkJCmludCBtYWluKHZvaWQpIHsKCUxpY3piYSAKCQlhPXswLDEsMCw5LDB9LCAvLyAxLjA5CgkJYj17MCwyLDAsNSwxfTsgLy8gMi4wNTEKCXBsdXMgICAgKCBhLCBiICk7IHBpc3ooYSk7IHB1dHMoIiIpOwoJcmF6eVUgICAoIGEsIDUgKTsgcGlzeihhKTsgcHV0cygiIik7Cglwb2R6aWVsVSggYSwgMyApOyBwaXN6KGEpOyBwdXRzKCIiKTsKCXJldHVybiAwOwp9Cg==