1. Дед мороз подарил детям три коробки конфет. В первой коробке было в три раза больше конфет, чем во второй, и на 30 конфет меньше, чем в третьей. Составить программу для решения задачи: сколько конфет в каждой коробке, если всего конфет 149?

Баллов: 3

 

Var K1,K2,K3,U:Integer;

begin

  For K1:=1 To 149 Do Begin

     For K2:=1 To 149 Do Begin

        For K3:=1 To 149 Do Begin

           If (K1+K2+K3=149) and (3*K2=K1) and (K1+30=K3) Then

             Writeln(K1,' ',K2,' ',K3);

        end;

     end;

  end;

  ReadLn;

end.

 

2. Летели галки. Видят березы. Попробовали сесть по одной на каждое дерево – четырем галкам не хватило берез. Стали садиться по две галки на каждую березу – одна береза осталась не занятой. Составить программу решения задачи: сколько было галок и сколько берез?

Баллов: 5

 

Procedure Berez1;

Var B,G,N:Integer;R:Boolean;

Begin

  N:=2;

  Repeat

    N:=N+1; R:=False;

    For B:=1 To N Do Begin

      For G:=1 To N Do Begin

        If (G-B=4) and (B*2-2=G) Then Begin

          Writeln(B,' ',G);

          R:=True;

        end;

      end;

    end;

  Until R;

  ReadLn;

End

 

3. Ввести  N. Вывести на экран в порядке возрастания все несократимые дроби, заключённые между 0 и 1, знаменатели которых не превышают N.

Баллов: 8

 

procedure show(n, chisl_left,znam_left,chisl_right,znam_right:integer);

var

      chisl,znam:integer;

begin

      chisl:=chisl_left+chisl_right;

      znam:=znam_left+znam_right;

      if znam<=n then begin

         show(n,chisl_left,znam_left,chisl,znam);

         writeln(chisl,'/',znam);

         show(n,chisl,znam,chisl_right,znam_right);

      end;

end;

 

var

      n:integer;

BEGIN

   writeln('N= ');

   readln(n);

   show(n,0,1,1,1);

END.

 

 

4. Введите с экрана a и b (–1<a<b<2). Найдите минимум функции sin(50·x)·cos(12·x)·exp(–2·x) на промежутке a≤x≤b с погрешностью 1E-6.

Баллов: 3

 

Function s(x:real):real;

begin

  s:=sin(50*x)*cos(12*x)*exp(-2*x);

end;

 

var

  a,b,s1,s2,x1,x2,dx:real;

  i,n:integer;

 

BEGIN

writeln('A= ');

readln(a);

writeln('B= ');

readln(b);

if(a<b) then begin

  dx := 1e-6;

  n:=round((b-a)/dx);

  x1:=a;

  s1:=s(x1);

  x2:=a;

  for i:=1 to n do begin

    x2:=x2+dx;

    s2:=s(x2);

    if s2<s1 then begin

      x1:=x2;

      s1:=s2;

    end;

  end;

  writeln('Min = ',s1,' X = ',x1);

end;

END.

 

5. В городе есть одна главная улица, протянувшаяся по идеальной прямой через весь город. На этой улице расположились друзья в определённых точках (расстояние от начала улице в метрах). Все люди могут двигаться с одинаковой скоростью. Введите количество друзей N и расстояние каждого из них от начала улицы. Определите и выведите на экран расстояние от начала улицы, где должны встретиться друзья, что бы в сумме, они прошли минимальное расстояние.

Баллов: 5

 

var a:array[1..100] of integer;

  min_len,min_val,max,tmp,

 i,n:integer;

 

//находит расстояние между точкой thck и точками

//там, где находятся люди

function GetLen(thck:integer):integer;

var i,sum:integer;

begin

sum:=0;

for i:=1 to N do

  sum:=sum+abs(thck-a[i]);

Result:=sum;

end;

 

begin

readln(n);

max:=-1;

for i:=1 to N do

  begin

  readln(a[i]);

  if max<a[i] then

    max:=a[i];

  end;

 

min_len:=MaxInt; //в какой точке минимальное расстояние

min_val:=MaxInt; //какое это расстояние

 

for i:=1 to max do  //перебираем все возможные расстояния

  begin

  tmp:=GetLen(i);

  //writeln(i,'==>',tmp);

  if tmp<min_val then

    begin

    min_val:=tmp;

    min_len:=i;

    end

  end;

 

if min_val<>MaxInt then

  writeln('точка сбора: ', min_len )

else

  writeln('точки не существует');

end.

 

6.  Вася и Петя учатся в школе в одном классе. Недавно Петя поведал Васе о хитром способе возведения в квадрат натуральных чисел, оканчивающихся на цифру 5. Теперь Вася может с легкостью возводить в квадрат двузначные (и даже некоторые трехзначные) числа, оканчивающиеся на 5. Способ заключается в следующем: для возведения в квадрат числа, оканчивающегося на 5 достаточно умножить число, полученное из исходного вычеркиванием последней пятерки на следующее по порядку число, затем остается лишь приписать «25» к получившемуся результату справа. Например, для того, чтобы возвести число 125 в квадрат достаточно 12 умножить на 13 и приписать 25, т.е. приписывая к числу 12*13=156 число 25, получаем результат 15625, т.е. 1252=15625. Напишите программу, возводящую именно таким образом число, оканчивающееся на 5, в квадрат.

Баллов: 3

 

var k:integer;
begin
write('Введите число: ');
readln(k);
if abs(k) mod 10<>5 then
begin
writeln('Ошибка. Число не заканчивается на 5!');
exit;
end;
k:=k div 10;
k:=k*(k+1);
writeln(k,'25');
end.

 

7. Введите целые числа m, n и матрицу a(m,n) из 0 и 1. Найти в ней квадратную подматрицу из одних единиц максимального размера.

Баллов: 4

 

MaxDim:=0; {текущая максимальная длина стороны}
for i:=n-1 downto 1 do

for j:=m-1 downto 1 do

if a[i,j]<>0

then begin

a[i,j]:=min(a[i,j+1],a[i+1,j+1],a[i+1,j])+1;

if a[i,j]>MaxDim

then a[i,j]:=MaxDim

end;

writeln('максимальная длина стороны= ',MaxDim);