#include<bits/stdc++.h>
using namespace std;
class Solver {
int n;
string ans;
void load(istream &is) {
is >> n;
}
bool specialCase() {
if(n == 1) {
ans = "1";
return true;
}
if(n == 2) {
ans = "1+1";
return true;
}
return false;
}
string bin(int n) {
string m;
while(n) {
m.push_back('0' + (n & 1));
n >>= 1;
}
return m;
}
void buildAns() {
if(specialCase())
return;
string rep = bin(n);
ans = "1+1";
int i = rep.size() - 2;
if(rep[i] == '1')
ans += "+1";
--i;
for(;i >= 0; --i) {
if(rep[i] == '1')
ans = "(" + ans + ")*(1+1)+1";
else
ans = "(" + ans + ")*(1+1)";
}
}
public:
void solve(istream &is) {
load(is);
buildAns();
}
void out(ostream &os) {
os << ans << endl;
}
};
// class Verifier {
// public:
// int calcOnes(string &s) {
// int ones = 0;
// for(int i = 0; i < s.size(); ++i)
// if(s[i] == '1')
// ++ones;
// return ones;
// }
// };
// int test_main() {
// Verifier verifier;
// for(int i = 1000000000 - 1000000; i <= 1000000000; ++i) {
// stringstream is;
// stringstream os;
// is << i;
// Solver solver;
// solver.solve(is);
// solver.out(os);
// string out;
// os >> out;
// if(verifier.calcOnes(out) > 100)
// cerr << "Too many ones for " << i << endl;
// }
// }
int _main(istream &is, ostream &os) {
int t;
is >> t;
while(t) {
--t;
Solver solver;
solver.solve(is);
solver.out(os);
}
}
int main() {
// test_main();
ios_base::sync_with_stdio(0);
_main(cin, cout);
}
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 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | #include<bits/stdc++.h> using namespace std; class Solver { int n; string ans; void load(istream &is) { is >> n; } bool specialCase() { if(n == 1) { ans = "1"; return true; } if(n == 2) { ans = "1+1"; return true; } return false; } string bin(int n) { string m; while(n) { m.push_back('0' + (n & 1)); n >>= 1; } return m; } void buildAns() { if(specialCase()) return; string rep = bin(n); ans = "1+1"; int i = rep.size() - 2; if(rep[i] == '1') ans += "+1"; --i; for(;i >= 0; --i) { if(rep[i] == '1') ans = "(" + ans + ")*(1+1)+1"; else ans = "(" + ans + ")*(1+1)"; } } public: void solve(istream &is) { load(is); buildAns(); } void out(ostream &os) { os << ans << endl; } }; // class Verifier { // public: // int calcOnes(string &s) { // int ones = 0; // for(int i = 0; i < s.size(); ++i) // if(s[i] == '1') // ++ones; // return ones; // } // }; // int test_main() { // Verifier verifier; // for(int i = 1000000000 - 1000000; i <= 1000000000; ++i) { // stringstream is; // stringstream os; // is << i; // Solver solver; // solver.solve(is); // solver.out(os); // string out; // os >> out; // if(verifier.calcOnes(out) > 100) // cerr << "Too many ones for " << i << endl; // } // } int _main(istream &is, ostream &os) { int t; is >> t; while(t) { --t; Solver solver; solver.solve(is); solver.out(os); } } int main() { // test_main(); ios_base::sync_with_stdio(0); _main(cin, cout); } |
English