#include<bits/stdc++.h> using namespace std; vector<int>JakieMnozenie; char Wynik[2000]; void RozlozLiczbe(int liczba, int &koniec){ while(liczba>2){ JakieMnozenie.push_back(liczba%2); liczba/=2; } if(liczba==1){ koniec=111; Wynik[110]='1'; return; } Wynik[110]='('; Wynik[111]='1'; Wynik[112]='+'; Wynik[113]='1'; Wynik[114]=')'; koniec=115; } void ZlozLiczbe(int &pocz, int &koniec){ int i; pocz=109; i=JakieMnozenie.size()-1; while(!JakieMnozenie.empty() ){ Wynik[koniec]='*'; Wynik[koniec+1]='('; Wynik[koniec+2]='1'; Wynik[koniec+3]='+'; Wynik[koniec+4]='1'; Wynik[koniec+5]=')'; Wynik[pocz]='('; pocz--; koniec+=6; if(JakieMnozenie[i]==1){ Wynik[koniec]='+'; Wynik[koniec+1]='1'; koniec+=2; } Wynik[koniec]=')'; koniec++; JakieMnozenie.pop_back(); i--; } for(i=pocz+2; i<koniec-1; i++){ printf("%c", Wynik[i]); } printf("\n"); } int main (){ int n, i, pocz, koniec, t; scanf("%d", &t); for(i=1; i<=t; i++){ scanf("%d", &n); if(n==1){ printf("1\n"); continue; } RozlozLiczbe(n, koniec); ZlozLiczbe(pocz, koniec); } 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 | #include<bits/stdc++.h> using namespace std; vector<int>JakieMnozenie; char Wynik[2000]; void RozlozLiczbe(int liczba, int &koniec){ while(liczba>2){ JakieMnozenie.push_back(liczba%2); liczba/=2; } if(liczba==1){ koniec=111; Wynik[110]='1'; return; } Wynik[110]='('; Wynik[111]='1'; Wynik[112]='+'; Wynik[113]='1'; Wynik[114]=')'; koniec=115; } void ZlozLiczbe(int &pocz, int &koniec){ int i; pocz=109; i=JakieMnozenie.size()-1; while(!JakieMnozenie.empty() ){ Wynik[koniec]='*'; Wynik[koniec+1]='('; Wynik[koniec+2]='1'; Wynik[koniec+3]='+'; Wynik[koniec+4]='1'; Wynik[koniec+5]=')'; Wynik[pocz]='('; pocz--; koniec+=6; if(JakieMnozenie[i]==1){ Wynik[koniec]='+'; Wynik[koniec+1]='1'; koniec+=2; } Wynik[koniec]=')'; koniec++; JakieMnozenie.pop_back(); i--; } for(i=pocz+2; i<koniec-1; i++){ printf("%c", Wynik[i]); } printf("\n"); } int main (){ int n, i, pocz, koniec, t; scanf("%d", &t); for(i=1; i<=t; i++){ scanf("%d", &n); if(n==1){ printf("1\n"); continue; } RozlozLiczbe(n, koniec); ZlozLiczbe(pocz, koniec); } return 0; } |