#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; } |