#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"); } } |
English