Var a,b,c,d:real; procedure p(a,b,c:real; var d:real); begin d:=b*b-4*a*c; end; begin readln(a,b,c); p(a,b,c,d); if d<0 then writeln('Корней нет') else if d=0 then writeln('x = ',-b/(2*a):3:1) else writeln('x1 = ',(-b+d)/(2*a):3:1,' x2 = ',(-b-d)/(2*a):3:1); end.
На каждой итерации цикла x div 100 убирает 2 цифры числа x с конца и к a прибавляется 1.
Тогда если a = 2 значит x лежит в диапазоне от 100 до 9999. Например при x=100 на первой итерации a=a+1=1 ,x=x div 100=1, 1>0 цикло продолжается a:=a+1=2; x:=x div 100=0. При x=9999 на первой итерации a=a+1=1 ,x=x div 100=99, 99>0 цикло продолжается a:=a+1=2; x:=x div 100=0.
К переменной b прибавляется 2 последние цифры числа x. Если в числе x будет четыре цифры то после первой итерации в числе x останется 2 цифры. Это значит что даже при минимальном четырехзначном числе x=1000 b=b+(10 mod 100)=b+10=10 мы получим значение большее 8. Значит нам подходят только трехзначные числа. Чтобы число было максимальным ставим 8 в сотни:800.
1) Сразу ясно, что невозможно, так как максимальное число, которое мы можем получить - это 81 (пермножается наибольшая цифра 9) 2) Здесь уже надо подумать. Из нашего условия видно, что второе число повторяется дважды и там и там. То есть эти два числа (в данном случае 35 и 56) будут иметь одинаковый множитель "второе число". На это и будем опираться. Посмотрим. 35 можно получить из произведения 5 на 7, а число 56 - из произведения 8 на 7. Заметим, что цифра 7 повторяется там и там, то бишь это и есть наша вторая цифра => может оказаться результатом работы автомата. 3) Здесь 32 можно получить, перемножив цифры 8 и 4, а 16 - 2 на 8. Повторяется 8 => может оказаться результатом работы автомата. 4) Делители 35 - это 5 и 7, у 72 - это 9 и 2^3 (8). Здесь уже нет общих делителей. (9 умножить на 2 не получиться, так как это уже будет не цифрой. Только 9 и 8) => не может быть результатом работы автомата.
procedure p(a,b,c:real; var d:real);
begin
d:=b*b-4*a*c;
end;
begin
readln(a,b,c);
p(a,b,c,d);
if d<0 then writeln('Корней нет')
else if d=0 then writeln('x = ',-b/(2*a):3:1)
else writeln('x1 = ',(-b+d)/(2*a):3:1,' x2 = ',(-b-d)/(2*a):3:1);
end.
Пример:
2 3 1
x1 = -0.5 x2 = -1.0