Вводятся 5 чисел: a, b, c, d и e. Найдите все целые решения уравнения ( ax3 + bx2 + cx + d ) / ( x - e ) = 0 на отрезке [0,1000] и выведите их количество. Примеры входные данные 2 4 9 1 5 выходные данные 0

Вводятся 5 чисел: a, b, c, d и e. Найдите все целые решения уравнения ( ax3 + bx2 + cx + d ) / ( x - e ) = 0 на отрезке [0,1000] и выведите их количество. Примеры входные данные 2 4 9 1 5 выходные данные 0
Гость
Ответ(ы) на вопрос:
Гость
//Когда Глеб расстроился //Pascal ABC.NET 3.1 сборка 1256 Var  a,b,c,d,e:real;   procedure cube(a,b,c,d,e:real); Var  p,q,delta,phi,i:real;  y:array[1..3] of real; begin p:=(3*a*c-sqr(b))/(3*sqr(a)); q:=(2*power(b,3)-9*a*b*c+27*sqr(a)*d)/(27*power(a,3)); delta:=power(q/2,2)+power(p/3,3); if delta<0 then  begin   if q<0 then    phi:=arctan(sqrt(-delta)/(-q/2));   if q>0 then    phi:=arctan(sqrt(-delta)/(-q/2))+pi;   if q=0 then    phi:=pi/2;   y[1]:=2*sqrt(-p/3)*cos(phi/3);   y[2]:=2*sqrt(-p/3)*cos(phi/3+(2*pi)/3);   y[3]:=2*sqrt(-p/3)*cos(phi/3+(4*pi)/3);   var x:=seq(y[1]-b/(3*a),y[2]-b/(3*a),y[3]-b/(3*a));   write(x.where(x -> x<>e).where(x -> frac(x)=0).where(x -> x>=0).Where(x -> x<=1000).Distinct.Count);  end; if delta>0 then  begin   var arsom:=range(0,1000).Where(x->(a*power(x,3)+b*x*x+c*x+d)/(x-e)=0);   write(arsom.Count);   {Мы не виноваты, Паскаль не может в комплексные числа}  end; if delta=0 then  begin   y[1]:=2*power(-q/2,1/3);   y[2]:=-power(-q/2,1/3);   var x:=seq(y[1]-b/(3*a),y[2]-b/(3*a));   write(x.where(x -> x<>e).where(x -> frac(x)=0).where(x -> x>=0).Where(x -> x<=1000).Distinct.Count);  end; end; procedure square(a,b,c,e:real); Var  d:real; begin d:=sqr(b)-4*a*c; if d<0 then writeln('0'); if d>0 then  begin   var x:=arr((-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));   write(x.where(x -> x<>e).where(x -> frac(x)=0).where(x -> x>=0).Where(x -> x<=1000).Distinct.Count);  end; if d=0 then  begin   var x:=arr(-b/(2*a));   write(x.where(x -> x<>e).where(x -> frac(x)=0).where(x -> x>=0).Where(x -> x<=1000).Distinct.Count);  end; end; procedure common(a,b,e:real); begin  var x:=arr(-b/a);  write(x.where(x -> x<>e).where(x -> frac(x)=0).where(x -> x>=0).Where(x -> x<=1000).Distinct.Count); end; procedure awfulvar(e:real); begin  if (e>=0) and (e<=1000) then writeln('1000') else writeln('1001'); end; procedure otherawfulvar(e:real); begin  if e<>0 then writeln('1') else writeln('0'); end; begin read(a,b,c,d,e); if (a<>0) and (b<>0) then cube(a,b,c,d,e); if (a=0) and (b<>0) then square(b,c,d,e); if (a=0) and (b=0) and (c<>0) and (d<>0) then common(c,d,e); if (a=0) and (b=0) and (c=0) and (d=0) then awfulvar(e); if (a=0) and (b=0) and (c<>0) and (d=0) then otherawfulvar(e); if (a=0) and (b=0) and (c=0) and (d<>0) then writeln('0'); end. Пример ввода: 1 1 1 1 1 Пример вывода: 0
Гость
//Pascal const   LOWER = 0; //Нижняя граница   UPPER = 1000; //Верхняя граница var   a, b, c, d, e, x, cnt: integer; begin   read(a, b, c, d, e);   for x := LOWER to UPPER do     if (a*x*x*x + b*x*x + c*x + d = 0) and (x <> e) then       inc(cnt);   writeln(cnt); end. Пример ввода: 3 4 2 0 1 Пример вывода: 1
Не нашли ответ?
Ответить на вопрос
Похожие вопросы