program jed; const limit=100; var n: byte; k: longword; e: longword; a: array[1..2,1..10] of longword; c: word; l: byte; l1: byte; l2: word; i,j,j1,j2: word; begin readln(n); for i:=1 to n do begin readln(k); l:=0; l1:=0; c := 2; e := trunc(sqrt(k)); while c <= e do begin while (k mod c) = 0 do begin l:=l+1; k:=k div c; end; if l>0 then begin l1:=l1+1; a[1,l1]:=c; a[2,l1]:=l; end; c:=c+1; e := trunc(sqrt(k)); l:=0; end; if k>1 then begin l1:=l1+1; a[1,l1]:=k; a[2,l1]:=1; end; l2:=0; for j1:=1 to l1 do l2:=l2+a[1,j1]*a[2,j1]; if l2>limit then writeln('NIE') else begin if (l1=1) and (a[2,1]=1) then begin write('1'); for j2:=1 to a[1,1]-1 do write('+1'); end else begin for j:=1 to l1 do for j1:=1 to a[2,j] do begin if (j>1) or (j1>1) then write('*'); write('(1'); for j2:=1 to a[1,j]-1 do write('+1'); write(')'); end; end; writeln; end; end; end.
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 | program jed; const limit=100; var n: byte; k: longword; e: longword; a: array[1..2,1..10] of longword; c: word; l: byte; l1: byte; l2: word; i,j,j1,j2: word; begin readln(n); for i:=1 to n do begin readln(k); l:=0; l1:=0; c := 2; e := trunc(sqrt(k)); while c <= e do begin while (k mod c) = 0 do begin l:=l+1; k:=k div c; end; if l>0 then begin l1:=l1+1; a[1,l1]:=c; a[2,l1]:=l; end; c:=c+1; e := trunc(sqrt(k)); l:=0; end; if k>1 then begin l1:=l1+1; a[1,l1]:=k; a[2,l1]:=1; end; l2:=0; for j1:=1 to l1 do l2:=l2+a[1,j1]*a[2,j1]; if l2>limit then writeln('NIE') else begin if (l1=1) and (a[2,1]=1) then begin write('1'); for j2:=1 to a[1,1]-1 do write('+1'); end else begin for j:=1 to l1 do for j1:=1 to a[2,j] do begin if (j>1) or (j1>1) then write('*'); write('(1'); for j2:=1 to a[1,j]-1 do write('+1'); write(')'); end; end; writeln; end; end; end. |