#include #include #include #include #define MAX_MAX 505 char arg1[MAX_MAX],arg2[MAX_MAX]; char res[MAX_MAX]; int len1,len2,oper,MAX,max; int lead_zero(char *s) { int i; for (i=0;*s;s++) if (*s=='0') i++; else break; return i; } void zero2spc(char *s) { char *p; for (p=s;;p++) if (*p=='0') if (p[1]) *p=' '; else break; else break; } void read_args(void) { char c; while (!isdigit(c=getchar())); ungetc(c,stdin); len1=0; while (isdigit(c=getchar())) arg1[len1++]=c; oper=c; len2=0; while (isdigit(c=getchar())) arg2[len2++]=c; if (oper=='*') MAX=len1+len2+2; else if (len1>len2) MAX=len1+1; else MAX=len2+1; memmove(arg1+MAX-len1, arg1, len1); memset(arg1,'0',MAX-len1); memmove(arg2+MAX-len2, arg2, len2); memset(arg2,'0',MAX-len2); arg1[MAX]=arg2[MAX]=0; } void add(char *a, char *b, char *res) { int c,i,s; char *p; for (c=0,i=MAX-1;i>=0;i--) { s=a[i]-'0'+b[i]-'0'+c; c=s/10; res[i]=(s%10)+'0'; } res[MAX]=0; max=MAX-lead_zero(res); if (len1>max) max=len1; if (len2>max) max=len2; if (max=0;i--) { d=a[i]-b[i]-c; c=0; while (d<0) { d+=10; c++; } res[i]=d+'0'; } res[MAX]=0; max=MAX-lead_zero(res); if (len1>max) max=len1; if (len2>max) max=len2; if (maxmax) max=len1; if (len2>max) max=len2; if (max=0;i--) { p=(a[i]-'0')*(num-'0')+c; res[i]=(p%10)+'0'; c=p/10; } res[MAX]=0; } char tmp_res[MAX_MAX][MAX_MAX]; void mul(char *a, char *b, char *res) { int i,j,c,s,t; char *p; for (i=MAX-1;i>=MAX-len2;i--) { mul1(a,b[i],tmp_res[i]); memmove(tmp_res[i],tmp_res[i]+(MAX-i-1),i+1); memset(tmp_res[i]+i+1,'0',MAX-i-1); tmp_res[i][MAX]=0; } for (c=0,j=MAX-1;j>=0;j--) { for (s=c,i=MAX-1;i>=MAX-len2;i--) s+=tmp_res[i][j]-'0'; c=s/10; res[j]=(s%10)+'0'; } res[MAX]=0; max=MAX-lead_zero(res); if (max=MAX-len2;i--) { t=MAX-lead_zero(tmp_res[i]); if (max=MAX-len2;i--) { memmove(tmp_res[i],tmp_res[i]+MAX-max,max); tmp_res[i][max]=0; } zero2spc(arg1); zero2spc(arg2); zero2spc(res); for (i=MAX-1;i>=MAX-len2;i--) tmp_res[i][max-(MAX-i)+1]=0; for (i=MAX-1;i>=MAX-len2;i--) zero2spc(tmp_res[i]); if (len2==max) { printf (" %s\n",arg1); printf ("*%s\n",arg2); for (i=0;i<=max;i++) putchar ('-'); putchar ('\n'); for (i=MAX-1;i>=MAX-len2;i--) { printf (" %s",tmp_res[i]); for (j=1;j=MAX-len2;i--) { printf ("%s",tmp_res[i]); for (j=1;j