#include #include #include #include FILE * fp; int o[10]; char s[10]; void ops(int d, int f){ int n; if(strcmp(s,"OP") == 0){ fscanf(fp,"%d",&n); o[d] += n*f; fscanf(fp,"%s",s); } else { fscanf(fp,"%s",s); if(*s=='n'){ fscanf(fp,"%s",s); do { ops(d+1,f); } while(strcmp(s,"END")!=0); } else { n = atoi(s); fscanf(fp,"%s",s); do { ops(d,f*n); } while(strcmp(s,"END")!=0); } fscanf(fp,"%s",s); } } int main(int argc, char *argv[]){ int n,i,j=1,k; fp = fopen("complex.in","r"); fscanf(fp,"%d",&n); while(n--){ for(i=0;i<9;i++) o[i]=0; do{ fscanf(fp,"%s",s); } while(strcmp(s,"BEGIN")!=0); fscanf(fp,"%s",s); while(1){ if(strcmp(s,"END") == 0) break; ops(0,1); } printf("Program #%d\n",j++); printf("Runtime = "); k=0; for(i=9;i>=0;i--){ if(o[i]>0){ if(k)putchar('+'); if((o[i]>1)||(i==0)){ printf("%d", o[i]); if(i!=0) printf("*"); } if(i!=0) printf("n"); if(i>1)printf("^%d",i); k=1; } } if(k==0) putchar('0'); printf("\n\n"); } fclose(fp); return 0; }