#include class Poly { public: int n; int coeff[20]; Poly() {} Poly operator+=(const Poly &a) { int nn=n; if(a.n>n) nn=a.n; for(int i=0;i<=nn;i++) { if(i>n) coeff[i]=0; if(i<=a.n) coeff[i]+=a.coeff[i]; } n=nn; return *this; } void perk(int k) { for(int i=0;i<=n;i++) coeff[i]*=k; } void pern() { for(int i=n+1;i>0;i--) coeff[i]=coeff[i-1]; coeff[0]=0; n++; } Poly (const Poly &a) { n=a.n; for(int i=0;i<=n;i++) coeff[i]=a.coeff[i]; } Poly &operator=(const Poly &a) { n=a.n; for(int i=0;i<=n;i++) coeff[i]=a.coeff[i]; return *this; } }; FILE *fp=fopen("complex.in","r"); Poly parse() { char s[100]; Poly ret,l; int k; ret.n=0; ret.coeff[0]=0; while(1) { fscanf(fp," %s",s); if(!strcmp(s,"END")) return ret; if(!strcmp(s,"BEGIN")) continue; if(!strcmp(s,"LOOP")) { char c; fscanf(fp," %c",&c); int x; if(c=='n') { l=parse(); l.pern(); } else{ ungetc(c,fp); fscanf(fp,"%d",&x); l=parse(); l.perk(x); } ret+=l; } if(!strcmp(s,"OP")) { int c; fscanf(fp," %d",&c); ret.coeff[0]+=c; } } return ret; } int main() { int n,i,count; Poly p; fscanf(fp," %d",&n); for(count=0;count1) printf("^%d",i); } puts("\n"); } return 0; }