Решение:
К числу 2 раза дописывается бит чётности ⇒ после шага «а» у нас всегда получится чётное число единиц ⇒ после «b» всегда добавится ноль
Должны получить чётное = 138, 140, 142, …
После div 2 должна сохраниться чётность!
138 / 2 = 69 = 10001012 :
– 3 ед., нечётность
140 / 2 = 70 = 10001102 :
– 3 ед., нечётность
142 / 2 = 71 = 10001112 :
– 4 ед., чётность
100011
Ответ: 35
Решение:
К числу 2 раза дописывается бит чётности ⇒ после шага «а» у нас всегда получится чётное число единиц ⇒ после «b» всегда добавится ноль
min чётное > 43 = 44, 46, 48, …
После div 2 должна сохраниться чётность!
44 / 2 = 22 = 101102 :
– 3 ед., нечётность
46 / 2 = 23 = 101112 :
– 4 ед., чётность
Ответ: 46
Должны получить чётное = 126 или 128 или …
После div 2 должна сохраниться чётность!
126 / 2 = 63 = 1111112 : – 6 единиц, чётность
Вход: 4
1: 4 – 1 = 3
2: 3·x = 3x
1: 3·x – 1
2: (3·x – 1) ·x = 3x2– x
1: 3x2– x – 1 = 23
Корни: x1= 3 и x2= – 2,666
Ответ: 3
формулу для вычисления суммы n первых членов арифметической прогрессии:
Начальные значения переменных s и n равны нулю
Шаг изменения переменных
n = 55 ⇒ цикл выполнится 11 раз
s увеличится на d 11 раз и станет равно 0 + 11·d = 11·d
Цикл остановился на 11-м шаге ⇒ 11·d > 365
Цикл не должен остановиться на 10-м шаге ⇒ 10·d ≤ 365
Получаем два неравенства:
n = 55
⇒ d ∈ [34; 36], max = 36
Ответ: 36
Начальные значения переменных:
s = 33 и n = 1
Шаг изменения переменных
n увеличивается в 3 раза ⇒ n=3k, где k –число шагов цикла
s уменьшается на 7, конечное значение s = 33 - 7*k ≤ 0, при k=5 (s=33–7*5=-2)
n = 3k = 35 = 243
Ответ: 243
Каждая функция вызывает другую (косвенная рекурсия)
Цепочка вызовов:
F(11) → G(10) → F(8) → G(7) → F(5) → G(4) → F(2) → G(1)
За один вызов G выводится одна звёздочка
4 вызова G ⇒ выведено 4 звездочки
Ответ: 4
4
5
6
13
17
27
40
56
F(2) = 2*2 + 4 + 5 = 13
F(3) = 2*3 + 5 + 6 = 17
Ответ: 56
Обозначим G(n) сумму чисел, которая выводится при вызове F(n)
G(n) = n при n >= 6
G(n) = n + G(n+2) + G(3n) при n < 6
6
7
8
9
10
11
12
13
14
15
79
30
39
22
27
Ответ: 79
Общее изменение координат:
Чертёжник должен вернуться в исходную точку ⇒ эти величины должны быть равны нулю
Найти max n∈N, при котором система уравнений разрешима в целых числах относительно a и b
N = НОД (25,14)
Ответ: 1
Общее изменение координат:
Чертёжник должен вернуться в исходную точку ⇒ эти величины должны быть равны нулю
N = наименьший общий делитель (25,10) >1
Ответ: 5
А
Как поступить, если остаток от деления равен 0?
Например, будут даны двадцать четыре «5».
Тогда выполним шаг назад, когда оставались последние восемь «5»: 55555555 → 255555 → 2255
555555555…5
247
555555555…5
9 «5» заменяются на одну «5» ⇒ при каждом повторении действий вычеркиваются по восемь «5»
Сколько «5» остались не вычеркнутыми?
Вычислим целочисленный остаток:
247 mod 8 = 7
5555555
225
Ответ: 225
Б
222222222…2
247
222222222…2
Теперь к последовательности применим алгоритм, описанный в пункте А.
82 mod 8 = 2
Не происходит замена трех «5» на «2»!
Происходит замена следующих трех «2» на «5»
247 div 3 = 82
247 mod 3 = 1
555555555…52
82
552
Ответ: 552
888888888…8
68
888888888…8
9 «8» заменяются на одну «8» ⇒ при каждом повторении действий вычеркиваются по восемь «8»
68 mod 8 = 4
8888
28
Ответ: 28
Робот останавливается в клетке, где нарушается условие «слева свободно ИЛИ сверху свободно»
Таких клеток три: конечная цель А1 и две «ложные цели» в В3 и Е1
Подсчитаем, сколько есть клеток, из которых Робот попадает в клетку В3 или E1;
«Нужных» клеток 36 – 15 = 21
Ответ: 4
Один шаг внешнего цикла
Задача №15. Сколько клеток лабиринта соответствуют требованию, что, начав
движение в ней и выполнив предложенную программу, РОБОТ уцелеет и остановится в закрашенной клетке (клетка F6)?
1) 8 2) 15 3) 24 4) 27
НАЧАЛО
ПОКА < справа свободно ИЛИ снизу свободно >
ПОКА < справа свободно >
вправо
КОНЕЦ ПОКА
ПОКА < снизу свободно >
вниз
КОНЕЦ ПОКА
КОНЕЦ ПОКА
КОНЕЦ
Ответ: 3
перестановка пары при сортировке пузырьком
6 9 7 2 1 5 0 3 4 8
1) 9 6 7 2 1 5 0 3 4 8
2) 9 7 6 2 1 5 0 3 4 8
3) 9 7 6 2 5 1 0 3 4 8
4) 9 7 6 2 5 1 3 0 4 8
5) 9 7 6 2 5 1 3 4 0 8
6) 9 7 6 2 5 1 3 4 8 0
с = 6
Исходный массив:
6 9 7 2 1 5 0 3 4 8
перестановка пары
4 7 3 8 5 0 1 2 9 6
4 7 3 8 5 0 1 2 9 6
3 7 4 8 5 0 1 2 9 6
с = 2
Исходный массив:
4 7 3 8 5 0 1 2 9 6
s:=A[0]-A[1]+A[1]-A[2]+A[2]-...
+A[7]-A[8]+A[8]-A[9]+A[9]-A[10]
max = 999 – 100 = 899
s:=A[0]-A[2]+A[1]-A[3]+A[2]-...
+A[6]-A[8]+A[7]-A[9]+A[8]-A[10]
max = 999 + 999 – 100 – 100 = 1798
1798
a := 0;
b := 10;
readln(x);
while x > 0 do begin
y := x mod 10;
x := x div 10;
if y > a then a := y;
if y < b then b := y;
end;
writeln(a);
writeln(b);
33336
{ максимальная цифра }
{ минимальная цифра }
var x, L, M: integer;
begin
readln(x);
L := x; M := 65;
if L mod 2 = 0 then
M := 52;
while L <> M do
if L > M then
L := L - M
else
M := M – L;
writeln(M);
end.
x нечётное: НОД(x,65) = 26
x чётное: НОД(x,52) = 26
x делится на 26,
не делится на 52!
104
НОД(104,52) = 52
function f(n: longint): longint;
begin
f:= n*(n-1)+10
end;
…
readln(k);
i:= 0;
while f(i) < k do
i:= i + 1;
writeln(i);
36
Останов: k <= f(i)
31 … 40
10
8
23 … 30
Останов:
f(i-1) < k <= f(i)
31 … 40
(i-1)*(i-2)+10 < k <= i*(i-1)+10
i2-3i+12 < k <= i2-i+10
i=6: 30 < k <= 40
Задача №22.
Найдите число различных значений k, при которых программа выдаёт тот же ответ, что и при k = 36.
var k, i : longint;
function f(n: longint): longint;
begin f := n * n * n;
end;
function g(n: longint): longint;
begin g := 2*n + 3;
end;
begin
readln(k);
i := 1;
while f(i) < g(k) do
i := i+1;
writeln(i)
end.
Останов:
f(i-1) < g(k) <= f(i)
3 … 12
(i-1)3 < 2k+3 <= i3
k=10: (i-1)3 < 23 <= i3
i=3
8 < 2k+3 <= 27
Ответ: 12
…
readln(x);
c:= 0;
while x > 0 do begin
c:= c + x mod 2;
x:= x div 10
end;
writeln(c)
…
ЗАДАНИЕ
Что выведет эта программа при вводе числа 15.
Приведите пример такого числа x, что, несмотря на ошибки, программа печатает правильный ответ.
Найдите все ошибки в этой программе.
Для каждой ошибки:
выпишите строку, в которой сделана ошибка;
укажите, как исправить ошибку.
Возможные ошибки
неверное начальное значение
неверное условие цикла
неверное изменение переменных
неверный вывод
Решение:
2
x = 1
1-я ошибка (знач. нули)
c:= c + x mod 2;
c:= c + 1;
2-я ошибка (обработка x)
x:= x div 10
x:= x div 2
readln(N);
maxDigit := N mod 10;
while N > 0 do begin
digit := N mod 10;
if digit mod 3 = 0 then
if digit > maxDigit then
maxDigit := digit;
N := N div 10;
end;
if maxDigit = 0 then
writeln('NO')
else
writeln(maxDigit);
ЗАДАНИЕ
Напишите, что выведет эта программа при вводе числа 134.
Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.
Найдите все ошибки в этой программе.
Для каждой ошибки:
выпишите строку, в которой сделана ошибка;
укажите, как исправить ошибку.
Решение:
4
333
1-я ошибка (Иниц-ия maxDigit)
maxDigit := N mod 10;
maxDigit := -1; {< 0}
2-я ошибка (Условие вывода)
if maxDigit = 0 then
if maxDigit = -1 then
Когда работает верное
последняя цифра делится на 3
последняя цифра меньше, чем нужный результат
const
N=40;
var a: array [1..N] of integer;
i, j, k: longint;
begin
for i:=1 to N do
readln(a[i]);
…
end.
k := 0;
for i := 1 to N-1 do
if ((a[i]+a[i+1]) mod 6 <> 0) and
(a[i]*a[i+1] < 1000) then
k := k + 1;
writeln(k);
Это сайт презентаций, где можно хранить и обмениваться своими презентациями, докладами, проектами, шаблонами в формате PowerPoint с другими пользователями. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами.
Email: Нажмите что бы посмотреть