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
#include <cstdio>
#include <vector>
#include <string>
#include <stack>
int main()
{
    int t;
    scanf("%d",&t);
    for(int i=0;i<t;i++)
    {
        int k;
        scanf("%d",&k);
        if(k)
        {
            std::string a="";
            std::vector <int> dane;
            while(k>0)
            {
                dane.push_back(k%3);
                k/=3;
            }
            for(int j=0;true;j++)
            {
                if(dane.at(j))
                {
                    a+="1";
                    if(dane.at(j)==2)
                        a+="+1";
                    if(j==dane.size()-1)
                        break;
                    else
                        a+="+";
                }
                else if(j==dane.size()-1)
                    break;
                a+="(1+1+1)*(";
            }
            for(int j=0;j<dane.size()-1;j++)
                a+=")";
            int b=a.find("(1)");
            while(b!=-1)
            {
                b=a.find("(1)");
                if(a[b-1]=='*' || a[b-1]=='+')
                    a.erase(b-1,4);
                else
                    a.erase(b,3);
                b=a.find("(1)");
            }
            std::stack <int> c;
            int d=-1;
            for(int j=0;j<a.length();j++)
            {
                if(a[j]=='(')
                    c.push(j);
                if(a[j]==')')
                {
                    d=c.top();
                    c.pop();
                }
                if(c.size()==0 && d!=-1)
                {
                    if(a[d+1]=='(' && a[j-1]==')')
                    {
                        a.erase(j,1);
                        a.erase(d,1);
                        j--;
                    }
                }
            }
            printf("%s",a.c_str());
        }
        printf("\n");
    }
    return 0;
}