program functio; function Factor:real; forward; function Mul:real; forward; function Number:real;forward; function Add1:real;forward; procedure Number1;forward; procedure Identifier;forward; procedure rsin(s1:string; var s2:string);forward; var temps1,temps,tempss,v:string; ll,x0,y0,j,ii,k1,k2,xn,yn,kv,kvs:integer; sinx,temp,y:real; var s,s0:string; i,hhh:integer; zero,szero:boolean; const digits : set of char=['0'..'9']; letters:set of char=['_','A'..'Z','a'..'z']; op : set of char=['+','-','*','/']; var x:real; k : word; state : 0..3; kf:integer; bud:boolean; f:array[1..20] of string; xk,xp:real; p:integer; eror:array[0..100] of integer; a,b:real; procedure rsin(s1:string; var s2:string); var kv1,kv,ii,j,jj,kvs,k1,k2:integer; sinx, temp:real; temps,v,v1,temps1,temps2:string; begin for j:=1 to kf do begin while pos(f[j],s1)<>0 do begin kvs:=pos(f[j],s1); k1:=1;k2:=0; ii:=kvs+4; while k1<>k2 do begin if s1[ii]='(' then k1:=k1+1; if s1[ii]=')' then k2:=k2+1; ii:=ii+1; end; //======================= temps:=copy(s1,kvs+3,ii-kvs+1); delete(temps,1,1); delete(temps,length(temps),1); for jj:=1 to kf do begin while pos(f[jj],temps)<>0 do rsin(temps,temps); end; while pos('x',temps)<>0 do begin kv:=pos('x',temps); delete(temps,kv,1); str(x:5:5,v); insert(v,temps,kv); end; i:=1; temps1:=s; s:=temps; sinx:=add1; s:=temps1; //======================= delete(s1,kvs,ii-kvs); //s:=''; bud:=true; if j=1 then temp:=sin(sinx); if j=2 then temp:=cos(sinx); if j=3 then temp:=abs(sinx); if (j=4)then if (sinx>=0) then temp:=sqrt(sinx); if (j=4)then if (sinx<0) then szero:=false; str(temp:5:5,v); insert(v,s1,kvs); s2:=s1; end; end; end; procedure Identifier; begin while (i0 do begin kv:=pos('sqrt',s); delete(s,kv,4); insert('srt',s,kv); end; while pos('pi',s)<>0 do begin kv:=pos('pi',s); delete(s,kv,2); str(pi:5:5,v); insert(v,s,kv); end; szero:=true; rsin(s,s); while pos('x',s)<>0 do begin kv:=pos('x',s); delete(s,kv,1); str(x:5:5,v); insert(v,s,kv); end; i:=1; y:=add1; // writeln('x=', x:2:2,' ',y:2:2); if (zero) and (szero)and(round(abs(y*100))/100<=0.009) then begin if (round(abs(x*100))/100<=0.009) then x:=abs(x); writeln(x:2:2); ll:=ll+1; end; x:=x+0.01; end; if ll=0 then writeln('No solution'); close(input); close(output); end.