#include <bits/stdc++.h>
using namespace std;
vector <int> potegi[1];
bool czy;
int wskaz;
void wypisz()
{
int s=potegi[0].size();
while(potegi[0][wskaz]==0)
wskaz++;
int y=potegi[0][wskaz];
if(wskaz<s-1)
{
for(int i=0; i<y; i++)
{
printf("(1+1)");
printf("*");
}
for(int i=wskaz; i<s; ++i)
{
potegi[0][i]-=y;
}
printf("(");
wskaz++;
wypisz();
printf("+1)");
}
else
{
for(int i=0; i<y; ++i)
{
printf("(1+1)");
if(i!=y-1)
printf("*");
}
}
}
void zamien(int n)
{
potegi[0].clear();
if(n%2==1)
czy=true;
n=n/2;
int i=1;
while(n!=0)
{
if(n%2==1)
{
potegi[0].push_back(i);
}
n=n/2;
i++;
}
wskaz=0;
}
int main()
{
int t,n;
scanf("%d", &t);
for(int i=0; i<t; ++i)
{
czy=false;
scanf("%d", &n);
if(n==1)
printf("1\n");
else
{
zamien(n);
wypisz();
if(czy==true)
{
printf("+1\n");
}
else
printf("\n");
}
}
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 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 | #include <bits/stdc++.h> using namespace std; vector <int> potegi[1]; bool czy; int wskaz; void wypisz() { int s=potegi[0].size(); while(potegi[0][wskaz]==0) wskaz++; int y=potegi[0][wskaz]; if(wskaz<s-1) { for(int i=0; i<y; i++) { printf("(1+1)"); printf("*"); } for(int i=wskaz; i<s; ++i) { potegi[0][i]-=y; } printf("("); wskaz++; wypisz(); printf("+1)"); } else { for(int i=0; i<y; ++i) { printf("(1+1)"); if(i!=y-1) printf("*"); } } } void zamien(int n) { potegi[0].clear(); if(n%2==1) czy=true; n=n/2; int i=1; while(n!=0) { if(n%2==1) { potegi[0].push_back(i); } n=n/2; i++; } wskaz=0; } int main() { int t,n; scanf("%d", &t); for(int i=0; i<t; ++i) { czy=false; scanf("%d", &n); if(n==1) printf("1\n"); else { zamien(n); wypisz(); if(czy==true) { printf("+1\n"); } else printf("\n"); } } return 0; } |
English