#include <cstdio>
#define MAX 100
int t,k;
int counter;
int brackets;
void roz(int k2) {
if(k2 == 1) {
if(counter <= MAX) {
for(int a = 0;a < brackets;a++)
printf("(");
}
return ;
}
if(k2 % 5 == 0) {
counter += 5;
roz(k2/5);
if(counter <= MAX) {
if(k2/5 == 1) printf("(1+1+1+1+1)");
else printf("*(1+1+1+1+1)");
}
} else if(k2 % 3 == 0) {
counter += 3;
roz(k2/3);
if(counter <= MAX) {
if(k2/3 == 1) printf("(1+1+1)");
else printf("*(1+1+1)");
}
}
else if(k2 % 2 == 0) {
counter += 2;
roz(k2/2);
if(counter <= MAX) {
if(k2/2 == 1) printf("(1+1)");
else printf("*(1+1)");
}
} else {
counter += 1;
if(k != k2) brackets++;
roz(k2-1);
if(counter <= MAX) {
if(k == k2) printf("+1");
else printf("+1)");
}
}
}
int main() {
scanf("%d",&t);
while(t--) {
scanf("%d",&k);
if(k == 1) printf("1\n");
else {
counter = 0;
brackets = 0;
roz(k);
if(counter <= MAX) printf("\n");
else printf("NIE\n");
}
}
}
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 | #include <cstdio> #define MAX 100 int t,k; int counter; int brackets; void roz(int k2) { if(k2 == 1) { if(counter <= MAX) { for(int a = 0;a < brackets;a++) printf("("); } return ; } if(k2 % 5 == 0) { counter += 5; roz(k2/5); if(counter <= MAX) { if(k2/5 == 1) printf("(1+1+1+1+1)"); else printf("*(1+1+1+1+1)"); } } else if(k2 % 3 == 0) { counter += 3; roz(k2/3); if(counter <= MAX) { if(k2/3 == 1) printf("(1+1+1)"); else printf("*(1+1+1)"); } } else if(k2 % 2 == 0) { counter += 2; roz(k2/2); if(counter <= MAX) { if(k2/2 == 1) printf("(1+1)"); else printf("*(1+1)"); } } else { counter += 1; if(k != k2) brackets++; roz(k2-1); if(counter <= MAX) { if(k == k2) printf("+1"); else printf("+1)"); } } } int main() { scanf("%d",&t); while(t--) { scanf("%d",&k); if(k == 1) printf("1\n"); else { counter = 0; brackets = 0; roz(k); if(counter <= MAX) printf("\n"); else printf("NIE\n"); } } } |
English