#include #include #include #include #include #include #include #define max(a,b) (((a)>(b))?(a):(b)) const int DLUG = 600; struct Tliczba { int l; short c[DLUG+1]; }; void init(Tliczba &x) { int i; for (i=1;i<=DLUG;i++) { x.c[i]=0; } x.l=0; } void init1 (Tliczba &x, char *s) { int i; for (i=1;i<=DLUG;i++) { x.c[i]=0; } x.l=0; i=strlen(s)-1; while (i>=0) { x.l++; x.c[x.l]=s[i]-48; i--; } } void wypisz (Tliczba x, char *s) { int i; // printf("x.l=%d\n",x.l); if (x.l==0) { sprintf(s,"0"); } else for(i=x.l;i>=1;i--) { sprintf(s,"%i",x.c[i]); s++; } } Tliczba dodaj1 (Tliczba x, Tliczba y) { Tliczba z; char cy=0; init(z); while ((z.l 0)) { z.l++; z.c[z.l]=x.c[z.l]+y.c[z.l]+cy; if (z.c[z.l]>=10) { z.c[z.l]-=10; cy=1; } else cy=0; } return (z); } Tliczba odejmij1(Tliczba x, Tliczba y) { Tliczba z; int i; char cy=0; init(z); for (i=1;i<=x.l;i++) { z.c[i]=x.c[i]-y.c[i]-cy; if (z.c[i]<0) { z.c[i]+=10; cy=1; } else cy=0; if (z.c[i]>0) z.l=i; } return (z); } Tliczba mnoz(Tliczba x, int y) { Tliczba z; init1(z,"0"); int i; for (i=0;i=2;i--) x.c[i]=x.c[i-1]; x.l++; x.c[1]=0; } int main() { char buf[1000][600]; int i; long ilosc_testow; char s1[1000],s2[1000],d; Tliczba l2; Tliczba l1; Tliczba z; Tliczba a[250]; int wmnoz; char x[2000]; int licz=0; int xx; int j; scanf("%ld\n", &ilosc_testow); for (; ilosc_testow; ilosc_testow--) { // scanf("%[0-9]%c%[0-9]\n",s1,&d,s2); gets(x); licz=0; while(isdigit(x[licz])) licz++; d=x[licz]; sscanf(x+licz+1,"%s",s2); x[licz]=0; sscanf(x,"%s",s1); init1(l1,s1); init1(l2,s2); wypisz(l1,buf[0]); buf[1][0]=d; wypisz(l2,buf[1]+1); int m=max(l1.l,l2.l+1); for (i=0;i=0;i--) { z=dodaj1(z,a[i]); if (i!=0) move(z); } for (i=0;i