#include #include int k, w, w1, w2, w3, w0, ww, pad, d; char sa[1005], sc[1005], *p, *q, *ea, *eb, *eaa, *ebb, *ec, *ecc, line[1005]; char sk[505][1005], *zsk[505], *ksk[505], *dig; int car, sum, dif, li, i, j; char *pr; void plus(void) { ec = ecc; car=0; for (;;) { if (*ea < '0' || *ea > '9') { pr=eb; break; } if (*eb < '0' || *eb > '9') { pr=ea; break; } sum=((int)(*ea)-'0')+((int)(*eb)-'0')+car; /*printf("a=%d b=%d sum=%d\n", (int)(*ea)-'0', (int)(*eb)-'0', sum);*/ car=(sum>=10); if (car) sum-=10; *ec=(sum+'0'); eb--; ea--; ec--; } /*printf("pr[-1] = %c\n", pr[-1]);*/ while (*pr >= '0' && *pr <= '9') { sum=((*pr)-'0')+car; car=(sum>=10); if (car) sum-=10; *ec=sum+'0'; ec--; pr--; } if (car) { *ec='1'; ec--; } w3=ecc-ec; /* printf("w3=%d\n", w3); */ w=w3; if (w'9') { pr=ea; break; } dif=((*ea)-'0')-((*eb)-'0')-car; if (dif<0) { dif+=10; car=1; } else car=0; *ec=(dif+'0'); ec--; ea--; eb--; } while (*pr >= '0' && *pr <='9') { dif=((*pr)-'0')-car; if (dif<0) { dif+=10; car=1; } else car=0; *ec=dif+'0'; ec--; pr--; } while (ec[1]=='0' && ec='0' && *dig<='9'; dig--) { /*printf("dig=%c\n", *dig);*/ ec=sk[li]+1003; ksk[li]=ec; ec[1]='\0'; if (*dig == '0') { *ec='0'; zsk[li]=ec-1; } else { car=0; for (ea=eaa; *ea>='0' && *ea <='9'; ea--) { sum=((int)(*ea)-'0')*((int)(*dig)-'0')+car; /*printf("sum=%d\n", sum);*/ car=sum/10; sum-=car*10; *ec=sum+'0'; ec--; } if (car) { *ec=car+'0'; ec--; } zsk[li]=ec; /** puts(zsk[li]+1);*/ ww=ksk[li]-ec+li; if (ww>w) w=ww; /*printf("ww=%d w=%d\n", ww, w);*/ } li++; } /*printf("idem s\n");*/ ec=ecc; car=0; for (i=0; izsk[j]) { /*printf("%c\n", ksk[j][j-i]);*/ sum+=((int)ksk[j][j-i]-'0'); /*printf("sum=%d\n", sum);*/ } } car=sum/10; sum-=car*10; *ec=sum+'0'; ec--; } if (car) { *ec=car+'0'; ec--; } while (ec[1]=='0' && ecw) w=w3; pad=w-w1; memset(line, ' ', pad); eaa[1]='\0'; strcpy(line+pad, sa+1); puts(line); pad=w-w2-1; memset(line,' ', pad); line[pad]='*'; strcpy(line+pad+1, eaa+2); puts(line); d=w2+1; if (d1) { for (i=0; i='0' && *p<='9'; p++) ; ea=p-1; w1=p-sa-1; for (q=p+1; *q; q++) ; w2=q-p-1; if (w1 <= w2) w0=w2+1; else w0=w1; eb=q-1; eaa=ea; ebb=eb; if (*p == '+') plus(); else if (*p == '-') minus(); else if (*p == '*') krat(); } return 0; }