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
#include <stdio.h>
#include <inttypes.h>
#include <string.h>
#define U32 uint32_t
#define I32 int32_t

unsigned char razy2[7]="*(1+1)";

unsigned char odp1[10000], odp2[10000];

U32 t, _t;
I32 i, j, ex;

int main(int argc, char **argv)
{
	odp1[0]='\0';
	odp2[0]='\0';
	scanf("%"SCNu32, &t);
	for (i=0; i<t; ++i){
		scanf("%"SCNu32, &_t);
		if (_t==1){
			printf("1\n");
		}else if(_t<=100){
			for (j=0; j<_t-1; ++j)
				printf("1+");
			printf("1\n");
		}else{
			ex=30;
			while(!((_t>>ex)&1))
				ex--;
			odp1[0]='1';
			odp1[1]='\0';
			while(ex>=1){ //fix dizz
				ex--;
				strcpy(odp2, odp1);
				odp1[0]='(';
				odp1[1]='\0';
				strcat(odp1, odp2);
				strcat(odp1, razy2);
				strcat(odp1, ")");
				if ((_t>>ex)&1){
					strcpy(odp2, odp1);
					odp1[0]='(';
					odp1[1]='\0';
					strcat(odp1, odp2);
					strcat(odp1, "+1");
					strcat(odp1, ")");
				}
			}
			printf("%s\n", odp1);
		}



	}

	//printf("%s\n", odp);
	//strcat(odp, razy2);

	return 0;
}