#include #include #include int main() { FILE *fp = fopen("complex.in", "r"); int i = 1, n; fscanf(fp, "%d\n", &n); for (i = 1; i <= n; i++) { char buf[256]; int p = 0, m = 1, f, t, k[12], l[40], ld = 0; memset(k, 0, sizeof(int) * 12); memset(l, 0, sizeof(int) * 40); l[0] = -1; do { fscanf(fp, "%s ", buf); } while (strncmp(buf, "BEGIN", 5)); for (;;) { fscanf(fp, "%s ", buf); if (!strncmp(buf, "LOOP", 4)) { fscanf(fp, "%s ", buf); if (buf[0] == 'n') { p++; ld++; l[ld] = 0; } else { m *= atol(buf); ld++; l[ld] = m; } } else if (!strncmp(buf, "OP", 2)) { fscanf(fp, "%d ", &t); k[p] += t*m; } else if (!strncmp(buf, "END", 3)) { if (l[ld] == 0) p--; else if (l[ld] == -1) break; else m /= l[ld]; ld--; } } printf("Program #%d\nRuntime = ", i); for (f = 0, t = 11; t > 1; t--) { if (k[t] > 1) { if (f) printf("+"); printf("%d*n^%d", k[t], t); f++; } else if (k[t] == 1) { if (f) printf("+"); printf("n^%d", t); f++; } } if (k[t] > 1) { if (f) printf("+"); printf("%d*n", k[t]); f++; } else if (k[t] == 1) { if (f) printf("+"); printf("n"); f++; } if ((k[0] > 0) || (!f)) { if (f) printf("+"); printf("%d", k[0]); } printf("\n\n"); } return 0; }