#include <cstdio> #include <algorithm> #include <string> using namespace std; #define forv(na,it) for(__typeof(na.begin()) it=na.begin(); it!=na.end(); it++) string rek (int x) { string wyn; if (x==1) return ""; if (x>0) wyn=rek(x/2); if (wyn.size()==0) wyn="1+1"; else if (*wyn.rbegin()==')') wyn=wyn+"*(1+1)"; else wyn="("+wyn+")*(1+1)"; if (x%2==1) wyn=wyn+"+1"; return wyn; } int main () { int q, x; scanf ("%d", &q); string wyn; while (q--) { scanf ("%d", &x); if (x==1) { printf ("1\n"); continue; } wyn=rek(x); forv(wyn, it) printf ("%c", *it); printf ("\n"); } }
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 | #include <cstdio> #include <algorithm> #include <string> using namespace std; #define forv(na,it) for(__typeof(na.begin()) it=na.begin(); it!=na.end(); it++) string rek (int x) { string wyn; if (x==1) return ""; if (x>0) wyn=rek(x/2); if (wyn.size()==0) wyn="1+1"; else if (*wyn.rbegin()==')') wyn=wyn+"*(1+1)"; else wyn="("+wyn+")*(1+1)"; if (x%2==1) wyn=wyn+"+1"; return wyn; } int main () { int q, x; scanf ("%d", &q); string wyn; while (q--) { scanf ("%d", &x); if (x==1) { printf ("1\n"); continue; } wyn=rek(x); forv(wyn, it) printf ("%c", *it); printf ("\n"); } } |