#include <iostream>
#include <cstdlib>
#include <cmath>
#include <stack>
using namespace std;
int main(int argc, char **argv){
int t;
scanf("%d", &t);
for(int i = 0 ; i < t ; i++){
int n;
scanf("%d", &n);
string res;
stack<char> s;
while(n>1){
if(n%2 == 0) {
s.push('*');
n /= 2;
} else {
s.push('+');
n-=1;
}
}
while(!s.empty()) {
if(s.top() == '*') {
if(res== ""){
res = "1+1";
} else {
res = "(" + res + ")*(1+1)";
}
} else {
res = res + "+1";
}
s.pop();
}
// if (res == "") {
// printf("1\n");
// }
// else {
// int k = 0;
//
// for(char c : res){
// if(c == '1') {
// k++;
// }
// }
// printf("%d\n", k);
// }
if (res == "") {
printf("1\n");
}
else {
printf("%s\n", res.c_str());
}
}
return 0;
}
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 | #include <iostream> #include <cstdlib> #include <cmath> #include <stack> using namespace std; int main(int argc, char **argv){ int t; scanf("%d", &t); for(int i = 0 ; i < t ; i++){ int n; scanf("%d", &n); string res; stack<char> s; while(n>1){ if(n%2 == 0) { s.push('*'); n /= 2; } else { s.push('+'); n-=1; } } while(!s.empty()) { if(s.top() == '*') { if(res== ""){ res = "1+1"; } else { res = "(" + res + ")*(1+1)"; } } else { res = res + "+1"; } s.pop(); } // if (res == "") { // printf("1\n"); // } // else { // int k = 0; // // for(char c : res){ // if(c == '1') { // k++; // } // } // printf("%d\n", k); // } if (res == "") { printf("1\n"); } else { printf("%s\n", res.c_str()); } } return 0; } |
English