#include <bits/stdc++.h> using namespace std; int ile; long long tab_pot[30]; int tab_pom[30]; int tab_wyp[30]; int liczba_w_binarnym[30]; void rozpisz_binarnie(long long x) { bool czy_juz=false; ile=0; for(int i=0;i<30&&czy_juz==false;i++) { tab_pom[i]=x%2; ile++; if(x==1)czy_juz=true; x=x/2; } int z=ile-1; for(int i=0;i<ile;i++) { liczba_w_binarnym[z]=tab_pom[i]; z--; } } int main() { tab_pot[0]=1; for(int i=1;i<30;i++) { tab_pot[i]=tab_pot[i-1]*2; } int t; long long k; scanf("%d",&t); for(int i=0;i<t;i++) { scanf("%lld",&k); bool czy_wypisalem=false; if(k==1) { printf("1\n"); czy_wypisalem=true; } if(czy_wypisalem==false) { for(int j=1;j<30;j++) { if(tab_pot[j]==k) { for(int u=0;u<j;u++) { if(u==0)printf("(1+1)"); else printf("*(1+1)"); } printf("\n"); czy_wypisalem=true; } } if(czy_wypisalem==false) { rozpisz_binarnie(k); int d=0; for(int j=0;j<ile;j++) { if(liczba_w_binarnym[j]==1)tab_wyp[d]=j,d++; } int pom_d=d; for(int j=pom_d-1;j>=0;j--) { if(j==pom_d-1) { if(ile-1-tab_wyp[d-1]==0)printf("1"); else { for(int u=0;u<ile-1-tab_wyp[d-1];u++) { if(u==0)printf("(1+1)"); else { printf("*(1+1)"); } } } d--; } else { { printf("*("); for(int u=0;u<ile-1-tab_wyp[d-1]-(ile-1-tab_wyp[d]);u++) { if(u==0)printf("(1+1)"); else { if(u<ile-1-tab_wyp[d-1]) printf("*(1+1)"); else printf("*(1+1)"); } } d--; } } } printf("+1)"); for(int j=0;j<pom_d-2;j++) { printf("+1)"); } printf("\n"); for(int j=0;j<30;j++)tab_pom[j]=0,liczba_w_binarnym[j]=0,tab_wyp[j]=0; } } } 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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | #include <bits/stdc++.h> using namespace std; int ile; long long tab_pot[30]; int tab_pom[30]; int tab_wyp[30]; int liczba_w_binarnym[30]; void rozpisz_binarnie(long long x) { bool czy_juz=false; ile=0; for(int i=0;i<30&&czy_juz==false;i++) { tab_pom[i]=x%2; ile++; if(x==1)czy_juz=true; x=x/2; } int z=ile-1; for(int i=0;i<ile;i++) { liczba_w_binarnym[z]=tab_pom[i]; z--; } } int main() { tab_pot[0]=1; for(int i=1;i<30;i++) { tab_pot[i]=tab_pot[i-1]*2; } int t; long long k; scanf("%d",&t); for(int i=0;i<t;i++) { scanf("%lld",&k); bool czy_wypisalem=false; if(k==1) { printf("1\n"); czy_wypisalem=true; } if(czy_wypisalem==false) { for(int j=1;j<30;j++) { if(tab_pot[j]==k) { for(int u=0;u<j;u++) { if(u==0)printf("(1+1)"); else printf("*(1+1)"); } printf("\n"); czy_wypisalem=true; } } if(czy_wypisalem==false) { rozpisz_binarnie(k); int d=0; for(int j=0;j<ile;j++) { if(liczba_w_binarnym[j]==1)tab_wyp[d]=j,d++; } int pom_d=d; for(int j=pom_d-1;j>=0;j--) { if(j==pom_d-1) { if(ile-1-tab_wyp[d-1]==0)printf("1"); else { for(int u=0;u<ile-1-tab_wyp[d-1];u++) { if(u==0)printf("(1+1)"); else { printf("*(1+1)"); } } } d--; } else { { printf("*("); for(int u=0;u<ile-1-tab_wyp[d-1]-(ile-1-tab_wyp[d]);u++) { if(u==0)printf("(1+1)"); else { if(u<ile-1-tab_wyp[d-1]) printf("*(1+1)"); else printf("*(1+1)"); } } d--; } } } printf("+1)"); for(int j=0;j<pom_d-2;j++) { printf("+1)"); } printf("\n"); for(int j=0;j<30;j++)tab_pom[j]=0,liczba_w_binarnym[j]=0,tab_wyp[j]=0; } } } return 0; } |