22байта=176бит
15кбайта=117760байт
156=163577856байт
<span>program</span> xjkhjh;
<span>uses</span> crt;<span>
Var</span> T<span>:</span><span>string</span>;
i<span>,</span> summ<span>:</span><span>byte</span>;
<span>Begin</span>
<span>Writeln</span><span>(</span><span>'Введи текст: '</span><span>)</span>;
<span>Readln</span><span>(</span>T<span>)</span>;
summ<span>:=</span><span>0</span>;
<span>For</span> i<span>:=</span><span>1</span><span>to</span> length<span>(</span>T<span>)</span><span>do</span>
<span>If</span> T<span>[</span>i<span>]</span><span>in</span><span>[</span><span>'y'</span><span>,</span><span>'x'</span><span>]</span><span>then</span> inc<span>(</span>summ<span>)</span>;
<span>Writeln</span><span>(</span><span>'Сумма = '</span><span>,</span>summ<span>)</span>;
<span>End</span>.
<em>// PascalABC.NET 3.3, сборка 1611 от 06.01.2018</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var (a,b,c):=ReadReal3('Введите три числа:');
if b.Between(a,c) then (a,b,c):=(2*a,2*b,2*c);
if (a<0) or (b<0) or (c<0) then (a,b,c):=(Abs(a),Abs(b),Abs(c));
Writeln('a=',a,', b=',b,', c=',c)
end.
Пример
Введите три числа: 3.6 -5.2 8
a=3.6, b=5.2, c=8
Первый оператор читает с клавиатуры три вещественных числа и помещает их в переменные a,b,c.
Второй оператор проверяет, находится ли второе число (b) между остальными двумя (может и совпадать с одним из них). Если да, то значение каждой переменной удваивается.
Третий оператор проверяет, есть ли среди введенных чисел хоть одно отрицательное. Если есть, значения заменяются их модулями (становятся положительными).
И в конце следует вывод результатов.
Такой вариант на простом паскале со стратегией жадность
var
n, s, i: integer;
x: array[1..100]of integer;
answer: string;
begin
readln(n);
for i := 1 to n do
read(x[i]);
readln(s);
answer := IntToStr(s) + ' = ';
for i := n downto 1 do
begin
answer := answer + IntToStr(s div x[i]) + '*' + IntToStr(x[i]);
s := s mod x[i];
if i > 1 then
answer := answer + ' + ';
end;
if s <> 0 then
writeln('NO')
else
writeln(answer);
end.
Более полный и правильный вариант решения, но и куда более сложный
//PascalABC.Net 3.1 сборка 1200
uses System.Collections.Generic;
uses System;
var
x := new List<integer>;
c := new List<Tuple<string, integer>>;
procedure getParcelling(sum, step: integer; coefficients: string; count: integer);
begin
if step >= x.Count then begin
if sum = 0 then c.Add((coefficients, count));
Exit;
end;
if step < 0 then step := 0;
for var j := 0 to (sum div x[step]) do
begin
var s := '';
if j > 0 then begin
if step > 0 then s += ' + ';
s += IntToStr(j) + '*' + IntToStr(x[step]);
end;
getParcelling(sum - x[step] * j, step + 1, coefficients + s, count + j);
end;
end;
begin
x := ReadArrInteger('x:', ReadInteger('n =')).ToList;
var sum := ReadInteger('sum =');
getParcelling(sum, 0, '', 0);
if c.Count = 0 then
writeln('No')
else begin
var min := c.Min(cc -> cc.Item2);
Println(c.Where(cc -> cc.Item2 = min));
end;
end.
1) закрашиваем бульдог, доберман, уход
2) все закрашиваем
3) закрашиваем доберман, бульдог
4) закрашиваем бульдог, доберман, и пересечени ухода с бульдогом и доберманом