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
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>

using namespace std;
int odciecie = 0;

string wypisz_jedynkami(long long int a, string prefiks, int przelicznik) {

	if (a == 0)
		return "";
	if (a == 1) {
		odciecie -= 1*przelicznik;
		return prefiks + "1";
	}
	if (a == 2) {
		odciecie -= 2*przelicznik;
		return prefiks + "1+1";
	}
	if (a == 3) {
		odciecie -= 3*przelicznik;
		return prefiks + "1+1+1";
	}
	
	long long int b = (int) floor(sqrt(a));
	long long int r = a - (int) pow(b, 2);
	long long int r_pom = a - (b * (b + 1));
	string wypisane_b1, wypisane_b2, wypisane_r;

	if (r_pom >= 0) {
		wypisane_b1 = wypisz_jedynkami(b, "", przelicznik);
		wypisane_b2 = wypisz_jedynkami(b+1, "", przelicznik);
		wypisane_r = wypisz_jedynkami(r_pom, "+", przelicznik);
	}
	else {
		wypisane_b1 = wypisz_jedynkami(b, "", przelicznik*2);
		wypisane_b2 = wypisane_b1;
		wypisane_r = wypisz_jedynkami(r, "+", przelicznik);
	}

	if (odciecie <= 0)
		return "NIE";
	if (wypisane_b1 != "1")
		wypisane_b1 = "(" + wypisane_b1 + ")";
	if (wypisane_b2 != "1")
		wypisane_b2 = "(" + wypisane_b2 + ")";

	return prefiks + wypisane_b1 + "*" + wypisane_b2 + wypisane_r;
}

int main() {

	ios_base::sync_with_stdio(0);

	int t;
	long long int liczba;

	cin >> t;

	for (int i=0; i < t; ++i) {
		odciecie = 100;
		cin >> liczba;
		cout << wypisz_jedynkami(liczba, "", 1) << endl;// "  " << odciecie << endl;
	}

	return 0;
}