Пусть b - количество быков, k - количество коров, t - количество телят. Тогда можно составить систему уравнений
Два уравнения, три неизвестных. Придется решать перебором вариантов. Но прямой перебор - это неинтересно. Попробуем оптимизировать. На 100 рублей можно купить максимум 100/10=10 быков, или 100/5=20 коров, или 100/0.5=200 телят. Без телят не обойтись, даже 18 коров и бык - это 19 голов, а нужно 100. Подбирать нужное количество из 200 хуже, чем из 20 или 10, поэтому сделаем замену, чтобы избавиться от t. Из второго уравнения следует, что t=100-b-k. (1) Подставим значение t в первое уравнение: 10b+5k+0.5(100-b-k)=100; 10b+5k+50-0.5b-0.5k=100; 9.5b+4.5k=50; 19b+9k=100 ⇒ k=(100-19b)/9 (2) Укрупненный алгоритм: Перебираем b от 0 до 9 (10 нельзя, истратим все 100 рублей, а телят покупать надо!). Для каждого b находим k по формуле (2). Если оно целочисленное, находим t по формуле (1). Решение найдено. Иначе перебор продолжается.
var b,k,t:integer; v:real;
begin for b:=0 to 9 do if (100-19*b) mod 9=0 then begin k:=(100-19*b) div 9; t:=100-b-k; Writeln('Быков ',b,', коров ',k,', телят ',t); break end; end.
1) program lineynoeuravnenie; var a, b: integer; x: real; begin writeln ('Введите коэффициенты a и b'); readln (a, b); x:=-b/a; write ('Решите уравнение', x); end.
2) program veschestvennoe; var a, b, c: integer; d, x1, x2: real; begin writeln ('Введите коэффициент a, b, c'); readln (a, b, c); if a=0 then begin x1:=-c/b; write ('Одно решение', x1), end; d=b*b-4*a*c; if d<0 then write ('Корней нет'); if d=0 then begin x1:=-b/(2*a); write ('Одно решение', x1); end; else begin x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); write (x1,'',x2); end; end.
Тогда можно составить систему уравнений
Два уравнения, три неизвестных. Придется решать перебором вариантов.
Но прямой перебор - это неинтересно. Попробуем оптимизировать.
На 100 рублей можно купить максимум 100/10=10 быков, или 100/5=20 коров, или 100/0.5=200 телят. Без телят не обойтись, даже 18 коров и бык - это 19 голов, а нужно 100. Подбирать нужное количество из 200 хуже, чем из 20 или 10, поэтому сделаем замену, чтобы избавиться от t.
Из второго уравнения следует, что t=100-b-k. (1)
Подставим значение t в первое уравнение:
10b+5k+0.5(100-b-k)=100;
10b+5k+50-0.5b-0.5k=100;
9.5b+4.5k=50;
19b+9k=100 ⇒ k=(100-19b)/9 (2)
Укрупненный алгоритм:
Перебираем b от 0 до 9 (10 нельзя, истратим все 100 рублей, а телят покупать надо!).
Для каждого b находим k по формуле (2). Если оно целочисленное, находим t по формуле (1). Решение найдено. Иначе перебор продолжается.
var
b,k,t:integer;
v:real;
begin
for b:=0 to 9 do
if (100-19*b) mod 9=0 then begin
k:=(100-19*b) div 9;
t:=100-b-k;
Writeln('Быков ',b,', коров ',k,', телят ',t);
break
end;
end.
Решение
Быков 1, коров 9, телят 90
var a, b: integer; x: real;
begin
writeln ('Введите коэффициенты a и b');
readln (a, b);
x:=-b/a;
write ('Решите уравнение', x);
end.
2) program veschestvennoe;
var a, b, c: integer; d, x1, x2: real;
begin
writeln ('Введите коэффициент a, b, c');
readln (a, b, c);
if a=0 then
begin
x1:=-c/b;
write ('Одно решение', x1),
end;
d=b*b-4*a*c;
if d<0 then
write ('Корней нет');
if d=0 then
begin
x1:=-b/(2*a);
write ('Одно решение', x1);
end;
else
begin
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
write (x1,'',x2);
end;
end.