1. Дед мороз подарил детям три коробки конфет. В первой коробке было в три раза больше конфет, чем во второй, и на 30 конфет меньше, чем в третьей. Составить программу для решения задачи: сколько конфет в каждой коробке, если всего конфет 149?
Баллов: 3
Var K1,K2,K3,U:Integer;
begin
For K1:=1 To 149 Do Begin
For
For K3:=1 To 149 Do Begin
If (K1+K2+K3=149) and (3*
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);