Ключи информатика

advertisement
Ответы и решения
5-7 классы
1. Клавиатура, джойстик, сканер, принтер. Принтер - устройство для вывода данных, всё
остальное - устройства ввода.
Телефон, модем, телефакс, память. Память - устройство хранения данных, всё остальное устройства передачи.
Перфолента, дискета, перфокарта, монитор. Монитор - устройство вывода данных, всё
остальное - носители информации.
2. … 13, 9
Чередующиеся через одно числа последовательность ряда 16,15, 14, 13, а следующее за
ним - меньше на 4
с, в (С емь, В осемь)
Первая буква в названии цифры
… 91, 152
2 числа складываем, получаем ещё одно. Цифры полученного складываем между
собой, затем прибавляем полученную сумму к самому числу и получаем следующее, идущее
по порядку в последовательности, число.
Сначала взяли цифру "5". Это - точка отсчёта. Прибавлять к ней нечего, чтобы
получить следующее число, поэтому следующим числом будет цифра, идущая по
классической последовательности "предыдущее число + 1", т.е. цифра "6".
Вот здесь уже, чтобы получить следующее число, надо к 5 прибавить 6: 5 + 6 = 11
Цифры полученного числа сложить: 1 + 1 = 2
И прибавить эту сумму к полученному числу: 11 + 2 = 13
Получили следующее число последовательности. С остальными аналогично:
6 + 13 = 19
1 + 9 = 10
19 + 10 = 29
13 + 29 = 42
4+2=6
42 + 6 = 48
29 + 48 = 77
7 + 7 = 14
77 + 14 = 91
48 + 91 = 139
1 + 3 + 9 = 13
139 + 13 = 152
3.
1) для первой буквы возможно три варианта (А, Е, И);
2) в каждом из трех этих вариантов второй карточкой можно поставить карточку с любой из трех
согласных букв (тогда всего будет 9 вариантов);
3) для третьей карточки в каждом случае имеется два варианта, так как одна гласная уже
использована (тогда общее число вариантов цепочек из трех карточек — 9 × 2 = 18);
4) для четвертой карточки в каждом случае имеется два варианта, так как одна согласная уже
использована (тогда общее число вариантов цепочек из четырех карточек — 18 × 2 = 36);
5) для пятой и шестой карточек возможны единственные варианты (после любой гласной буквы
должна стоять единственная оставшаяся
согласная, а после любой согласной — единственная
оставшаяся гласная). Следовательно, общее количество вариантов не изменится.
Ответ: всего существует 36 таких цепочек.
4.
 Разрезаем веревку на две части 25 и 50 метров.
 25-ти метровую веревку одним концом привязываем к верхнему дереву, а на другом конце
делаем узел с маленькой петлей, через которую до половины пропускаем 50-ти метровую
веревку и слаживаем ее вдвое.

По этим двум веревкам (одинарной 25-ти метровой и сложенной пополам 50-ти метровой)
спускаемся на нижнее дерево, и за один конец вытягиваем из петли 50-ти метровую
веревку, перевязываемся и спускаемся по ней на землю.
5. Ответ: Влад — юрист и регбист, Тимур — врач и турист, Юра — физик и бегун.
6. Хакер, Драйвер, Алгоритм
7.

Заполняем водой из реки 9-ти литровое и переливаем из него воду в 5-ти литровое (в 9-ти
литровом остается 4 литра).

Освобождаем 5-ти литровое ведро и переливаем в него 4 литра из 9-ти литрового.

Еще раз заполняем водой из реки 9-ти литровое и из него доливаем в 5-ти литровое 1
литр воды (в 9-ти литровом остается 8 литров).

Освобождаем 5-ти литровое и переливаем в него из 9-ти литрового 5 литра воды. В 9-ти
литровом ведре останется 3 литра воды.
8. 2, 4
8-9 классы
1.
2.
3.
4.
5.
Ответ:CADB
Ответ: 6,8,8
Ответ: 5
Ответ: 13
Ответ: 6
6. Один из вариантов реализации решения задачи
(на языке программирования Паскаль)
program p6;
{Вычислить в какой коорд. четверти расположен треуг.
образованный осями коорд. и прямой y=kx+b }
uses crt;
var k,b:longint;x,y:real;
begin
write(' введите коэф. k=');readln(k);
write(' введите коэф. b=');readln(b);
y:=b;x:=-b/k;
if (x>0)and(y>0)
then begin
write(' 1-ая четверть');readln;halt;
end;
if (x<0)and(y>0)
then begin
write(' 2-ая четверть');readln;halt;
end;
if (x<0)and(y<0)
then begin
write(' 3-ая четверть');readln;halt;
end;
if (x>0)and(y<0)
then begin
write(' 4-ая четверть');readln;halt;
end;
end.
7. Один из вариантов реализации решения задачи
(на языке программирования Паскаль)
program p7;
var a:array[1..10,1..10] of real;
s1,s2:real;i,j,k,n:integer;
begin
write('введите кол.строк и столб.=');
readln(n);
for i:=1 to n do
for j:=1 to n do
begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
s1:=0;s2:=0;
for k:=1 to n do
begin
s1:=s1+a[k,k];
s2:=s2+a[k,n+1-k];
end;
write('s1=',s1);
writeln(' s2=',s2);
end.
8. Один из вариантов реализации решения задачи
(на языке программирования Паскаль)
program p8;
uses crt;
var kol_vo,i,n,f : longint;
begin
clrscr;
write('N=');readln(n);
if n>=20 then halt;
f:=1;
for i:=1 to n do f:=f*i;
for i:=1 to f do
if f mod i=0 then begin inc(kol_vo);write(i,' ') end;
writeln;
write('Кол-во различных делителей числа N!=',f,' : ',kol_vo);
readln;
end.
10-11 классы
1. Ответ:545
2. Ответ: 44
3. Ответ: 85
4. Ответ: 1, 3
5. Один из вариантов реализации решения задачи
(на языке программирования Паскаль)
program p6;
{ Уплотнить линейный массив удалив нули и сдвинув влево остальные элм.}
var m,i,k:longint; a:array[1..100]of longint;
begin
write('введите кол-во элементов таблицы: ');readln(k);
for i:=1 to k do
begin
write('a[',i,']=');readln(a[i]);
end;
m:=0;
for i:=1 to k do
if a[i]=0 then inc(m)
else a[i-m]:=a[i];k:=k-m;
for i:=1 to k do write(a[i],' ');
end.
6 Один из вариантов реализации решения задачи
(на языке программирования Паскаль)
program p6;
var s:string;
slovo,st,st1:string;
i,k,k1:byte;
Begin
writeln('Введите предложение');
readln(s);
if s='' then begin
writeln('нет текста');
exit;
end;
s:=s+' ';
k:=0;
st:='';
k1:=255;
st1:='';
for i:=1 to length(s) do
if not(s[i] in [' ',',','.','?','!']) then
slovo:=slovo+s[i]
else begin
if length(slovo)>k then begin
k:=length(slovo);
st:=slovo;
end;
if length(slovo)<k1 then begin
k1:=length(slovo);
st1:=slovo;
end;
slovo:='';
end;
if length(st)<>0 then begin
writeln('Длинное слово в тексте:',st,' длина=',length(st));
writeln('Короткое слово в тексте:',st1,' длина=',length(st1));
end;
End.
7.Один из вариантов реализации решения задачи
(на языке программирования Паскаль)
(******************************************
Программа выясняет, сколько дней прошло
между двумя датами.
Исходная дата представлена так:
type
TDate = record
day: [1..31];
month: [1..12];
year: word;
end;
Високосные годы учитываются.
******************************************)
program Date2;
type
TDate = record
day: 1..31;
month: 1..12;
year: word;
end;
var
srcdate, curdate: TDate;
(*---------------------------------------Функция проверяет, является ли
год високосным
----------------------------------------*)
function VisokosnyGod (n: integer): boolean;
begin
if (((n mod 400)=0) or (((n mod 4)=0) and ((n mod 100) <> 0))) then
VisokosnyGod := TRUE
else
VisokosnyGod := FALSE;
end;
(*---------------------------------------Функция проверяет, правильно ли
задан день в зависимости от
месяца и года
----------------------------------------*)
function CheckDayOfMonth (day, month, year: integer): boolean;
begin
if ((day>30)and(month in [2,4,6,9,11])) or
((day>29)and(month=2)) or
((day>28)and(month=2)and(not VisokosnyGod(year))) then
CheckDayOfMonth:=false
else
CheckDayOfMonth:=true;
end;
(*---------------------------------------Процедура ввода даты с защитой
----------------------------------------*)
procedure EnterDate (var d: TDate);
var
n: integer;
dayOk: boolean;
begin
write('Год: ');
readln(d.year);
repeat
write('Месяц (1..12): ');
readln(n);
if (n<1)or(n>12) then
writeln('Ошибка! Номер месяца должен находиться в диапазоне 1..12');
until (n>0)and(n<13);
d.month:=n;
repeat
dayOk:=true;
write('День (1..31): ');
readln(n);
if (n<1)or(n>31)or(not CheckDayOfMonth(n, d.month, d.year)) then begin
writeln('Ошибка! День не может иметь такое значение для выбранных '+
'года и месяца. Выберите другой день');
dayOk:=false;
end;
until dayOk;
d.day:=n;
end;
(*---------------------------------------Функция возвращает количество
дней от начала эры до указанной
даты
----------------------------------------*)
function DaysFromZero (d, m, y: integer): longint;
begin
if m>2 then
m := m+1
else begin
m := m+13;
y := y-1;
end;
DaysFromZero := trunc(36525*y/100+306*m/10+d);
end;
begin
writeln('Программа возвращает количество дней между заданной '+
'датой и текущей');
writeln('Введите сегодняшнее число');
EnterDate(curdate);
writeln('Введите интересующую вас дату');
EnterDate(srcdate);
writeln('Заданная дата: ',srcdate.day,'.',srcdate.month,'.',srcdate.year);
writeln('Сегоднящняя дата: ',curdate.day,'.',curdate.month,'.',curdate.year);
writeln('Количество дней между этими датами = ',
abs(DaysFromZero(curdate.day, curdate.month, curdate.year)DaysFromZero(srcdate.day, srcdate.month, srcdate.year)));
end.
Download