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
#include<iostream>
#include<cmath>
using namespace std;
 
int podzielnik[100];
int ile_dzieln;
string wynik;
 
void zamien_na1(int dozamianyna1)
{					//czynniki mniejsze od 7 zamienia na zestawy jedynek
 switch (dozamianyna1)
 {
  case 2: 
  wynik=wynik+"(1+1)";
  break;
  case 3: 
  wynik=wynik+"(1+1+1)";
  break;
  case 4: 
  wynik=wynik+"(1+1+1+1)";
  break;
  case 5: 
  wynik=wynik+"(1+1+1+1+1)";
  break;
  case 6: 
  wynik=wynik+"(1+1)*(1+1+1)";
  break;
  case 7: 
  wynik=wynik+"((1+1)*(1+1+1)+1)";
  break;
 }
}



void dzielniki(int n)
{						//liczbe rozbija na dzielniki
    int pierw, pom;
    
 
        pierw = sqrt(n);
        int k=2; //ustawiamy k na pierwsza liczb� pierwsz�
 
        //rozklad liczby na czynniki pierwsze
        while(n>1&&k<=pierw)
        {
                while(n%k==0) //dopoki liczba jest podzielna przez k
                {
                        //jezeli czynnik mniejszy niz 7, wywolywana funkcja zamien na jedynki
                        //jesli nie, wypisujemy (1+ i wywolujemy rekurencyjnie dzielniki(k-1)
                        if (k<=7) zamien_na1(k); else 
						{
                        	wynik=wynik+"(1+";
							
                        	dzielniki(k-1);
							wynik=wynik+")";	
							//wynik zapisywany do stringa wynik
						
						}
					
                        
						n/=k;
                }
                ++k;
        }
 
        if(n>7)            
			    {//podobnie postepujemy z najwiekszym,ostatnim czynnikiem pierwszym
			    //tez rozbijamy go na (1+reszta. Reszt� (n-1) traktujemy rekurencyjnie dzielniki(n-1)
					wynik=wynik+"(1+";
					
					dzielniki(n-1);
					wynik=wynik+")";
					
				} else zamien_na1(n);
			        
}
        
int main (void)		
		{
		 ios_base::sync_with_stdio(0);
		 int ile_testow;
		 cin>>ile_testow;
		 for (int licz_testy=1;licz_testy<=ile_testow;licz_testy++)
		 {
		 	int liczba=0;
         	cin>>liczba;
         	dzielniki(liczba);
		 	int zlicz1=0;
		 	for (int licz=0;licz<=wynik.length();licz++) if (wynik[licz]=='1') zlicz1++;
		 	if (zlicz1>100) cout<<"NIE\n";
		 	else
		 	{
		  		for (int licz=0;licz<=wynik.length()-1;licz++)
		  		{ if ((wynik[licz]==')') && (wynik[licz+1]=='(')) cout<<wynik[licz]<<'*'; else cout<<wynik[licz];}
			}
		  cout<<'\n';
		  wynik.clear();
		}
		 
         return 0;
		}