#include <stdio.h>
#include <string.h>
char result[10000];
char *pr;
const char* a[] = { "0"
, "1", "1+1", "1+1+1", "1+1+1+1", "1+1+1+1+1"
, "(1+1)*(1+1+1)", "(1+1)*(1+1+1)+1", "(1+1)*(1+1)*(1+1)", "(1+1+1)*(1+1+1)", "(1+1+1)*(1+1+1)+1"
, "(1+1+1)*(1+1+1)+1+1", "(1+1)*(1+1)*(1+1+1)", "(1+1)*(1+1)*(1+1+1)+1", "((1+1)*(1+1+1)+1)*(1+1)", "((1+1)*(1+1)+1)*(1+1+1)"
, "(1+1)*(1+1)*(1+1)*(1+1)", "(1+1)*(1+1)*(1+1)*(1+1)+1", "(1+1)*(1+1+1)*(1+1+1)", "(1+1)*(1+1+1)*(1+1+1)+1", "((1+1+1)*(1+1+1)+1)*(1+1)"
, "((1+1)*(1+1+1)+1)*(1+1+1)", "((1+1)*(1+1+1)+1)*(1+1+1)+1", "((1+1)*(1+1+1)+1)*(1+1+1)+1+1"
, "(1+1)*(1+1)*(1+1)*(1+1+1)", "(1+1)*(1+1)*(1+1)*(1+1+1)+1", "((1+1)*(1+1)*(1+1+1)+1)*(1+1)"
, "(1+1+1)*(1+1+1)*(1+1+1)", "(1+1+1)*(1+1+1)*(1+1+1)+1", "(1+1+1)*(1+1+1)*(1+1+1)+1+1"
, "((1+1+1)*(1+1+1)+1)*(1+1+1)", "((1+1+1)*(1+1+1)+1)*(1+1+1)+1", "(1+1)*(1+1)*(1+1)*(1+1)*(1+1)"
};
void calc(unsigned int n)
{
if (n == 1) {
*pr++ = '1';
return;
}
if (n <= 32) {
*pr++ = '(';
pr = stpcpy( pr, a[n] );
*pr++ = ')';
return;
}
if (n % 2 == 0) {
*pr++ = '(';
pr = stpcpy( pr, a[2] );
*pr++ = ')';
*pr++ = '*';
calc(n/2);
return;
}
if (n % 3 == 0) {
*pr++ = '(';
pr = stpcpy( pr, a[3] );
*pr++ = ')';
*pr++ = '*';
calc(n/3);
return;
}
if (n % 5 == 0) {
*pr++ = '(';
pr = stpcpy( pr, a[5] );
*pr++ = ')';
*pr++ = '*';
calc(n/5);
return;
}
*pr++ = '(';
*pr++ = '1';
*pr++ = '+';
calc(n-1);
*pr++ = ')';
}
int main()
{
int t, i;
unsigned int k;
scanf("%d\n", &t);
for(i = 0; i < t; ++i) {
pr = result;
scanf("%u\n", &k);
calc(k);
*pr = '\0';
printf("%s\n", result);
}
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 68 69 70 71 72 73 74 75 76 77 78 79 80 | #include <stdio.h> #include <string.h> char result[10000]; char *pr; const char* a[] = { "0" , "1", "1+1", "1+1+1", "1+1+1+1", "1+1+1+1+1" , "(1+1)*(1+1+1)", "(1+1)*(1+1+1)+1", "(1+1)*(1+1)*(1+1)", "(1+1+1)*(1+1+1)", "(1+1+1)*(1+1+1)+1" , "(1+1+1)*(1+1+1)+1+1", "(1+1)*(1+1)*(1+1+1)", "(1+1)*(1+1)*(1+1+1)+1", "((1+1)*(1+1+1)+1)*(1+1)", "((1+1)*(1+1)+1)*(1+1+1)" , "(1+1)*(1+1)*(1+1)*(1+1)", "(1+1)*(1+1)*(1+1)*(1+1)+1", "(1+1)*(1+1+1)*(1+1+1)", "(1+1)*(1+1+1)*(1+1+1)+1", "((1+1+1)*(1+1+1)+1)*(1+1)" , "((1+1)*(1+1+1)+1)*(1+1+1)", "((1+1)*(1+1+1)+1)*(1+1+1)+1", "((1+1)*(1+1+1)+1)*(1+1+1)+1+1" , "(1+1)*(1+1)*(1+1)*(1+1+1)", "(1+1)*(1+1)*(1+1)*(1+1+1)+1", "((1+1)*(1+1)*(1+1+1)+1)*(1+1)" , "(1+1+1)*(1+1+1)*(1+1+1)", "(1+1+1)*(1+1+1)*(1+1+1)+1", "(1+1+1)*(1+1+1)*(1+1+1)+1+1" , "((1+1+1)*(1+1+1)+1)*(1+1+1)", "((1+1+1)*(1+1+1)+1)*(1+1+1)+1", "(1+1)*(1+1)*(1+1)*(1+1)*(1+1)" }; void calc(unsigned int n) { if (n == 1) { *pr++ = '1'; return; } if (n <= 32) { *pr++ = '('; pr = stpcpy( pr, a[n] ); *pr++ = ')'; return; } if (n % 2 == 0) { *pr++ = '('; pr = stpcpy( pr, a[2] ); *pr++ = ')'; *pr++ = '*'; calc(n/2); return; } if (n % 3 == 0) { *pr++ = '('; pr = stpcpy( pr, a[3] ); *pr++ = ')'; *pr++ = '*'; calc(n/3); return; } if (n % 5 == 0) { *pr++ = '('; pr = stpcpy( pr, a[5] ); *pr++ = ')'; *pr++ = '*'; calc(n/5); return; } *pr++ = '('; *pr++ = '1'; *pr++ = '+'; calc(n-1); *pr++ = ')'; } int main() { int t, i; unsigned int k; scanf("%d\n", &t); for(i = 0; i < t; ++i) { pr = result; scanf("%u\n", &k); calc(k); *pr = '\0'; printf("%s\n", result); } return 0; } |
English