#include <cstdio> using namespace std; int main(int argc, char *argv[]) { int t; unsigned int k; char res[401]; int b; char* p; scanf("%d\n", &t); for (int i = 0; i < t; i++) { b = 0; p = res; scanf("%u\n", &k); while (k > 2) { if (k & 0x01) { *p++ = '('; *p++ = '1'; *p++ = '+'; b++; k -= 1; } else { *p++ = '('; *p++ = '1'; *p++ = '+'; *p++ = '1'; *p++ = ')'; *p++ = '*'; k >>= 1; } } if (k == 2) { if (p == res) { *p++ = '1'; *p++ = '+'; *p++ = '1'; } else if (*(p-1) == '+') { *p++ = '1'; *p++ = '+'; *p++ = '1'; } else { *p++ = '('; *p++ = '1'; *p++ = '+'; *p++ = '1'; *p++ = ')'; } } else { if (p == res) { *p++ = '1'; } else if (*(p-1) == '+') { *p++ = '1'; } else { p--; } } while (b > 0) { *p++ = ')'; b--; } *p = '\0'; printf("%s\n", res); } fflush(stdout); return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | #include <cstdio> using namespace std; int main(int argc, char *argv[]) { int t; unsigned int k; char res[401]; int b; char* p; scanf("%d\n", &t); for (int i = 0; i < t; i++) { b = 0; p = res; scanf("%u\n", &k); while (k > 2) { if (k & 0x01) { *p++ = '('; *p++ = '1'; *p++ = '+'; b++; k -= 1; } else { *p++ = '('; *p++ = '1'; *p++ = '+'; *p++ = '1'; *p++ = ')'; *p++ = '*'; k >>= 1; } } if (k == 2) { if (p == res) { *p++ = '1'; *p++ = '+'; *p++ = '1'; } else if (*(p-1) == '+') { *p++ = '1'; *p++ = '+'; *p++ = '1'; } else { *p++ = '('; *p++ = '1'; *p++ = '+'; *p++ = '1'; *p++ = ')'; } } else { if (p == res) { *p++ = '1'; } else if (*(p-1) == '+') { *p++ = '1'; } else { p--; } } while (b > 0) { *p++ = ')'; b--; } *p = '\0'; printf("%s\n", res); } fflush(stdout); return 0; } |