Var X, y, a, b: longint;
begin
a := 0;
b := 0;
readln(x);
while x > 0 do begin
y := x mod 10;
if y > 3 then a := a + 1;
if y < 7 then b := b + 1;
x := x div 10
end;
writeln(a);
writeln(b)
end.
21) Напишите в ответе количество различных значений входной переменной a из интервала от 1000 до 2000 (включая границы), при которых программа выдаёт тот же ответ, что и при входном значении a = 1111. Значение a = 1111 также включается в подсчёт различных значений a:
Var a, I, k: integer;
function f(x: integer): integer;
Var m: integer;
begin
if x < 10 then f := x
else begin
m := f(x div 10);
if m < x mod 10 then
f := x mod 10
else
f := m;
end;
end;
begin
k := 0;
readln(a);
for i := 1000 to a do
if f(i mod 100) = 1 then
if f(i div 100) = f(i mod 100) then
k := k + 1;
writeln(k);
end.
22) У исполнителя Калькулятор три команды, которым присвоены номера:
1. Прибавь 2
2. Прибавь 3
3. Прибавь 5
Программа для исполнителя – это последовательность команд. Сколько существует программ, которые число 20 преобразуют в число 35?
23) Сколько решений имеет система :
24) Дано натуральное число N, не превосходящее 108. Необходимо найти и вывести число, которое получится при записи N справа налево и удалении всех единиц. Ведущие нули выводить не надо. Если в числе N нет цифр кроме единиц и нулей, необходимо вывести 0. Например, при вводе числа 1984 нужно вывести 489, а при вводе 2001 нужно вывести 2. Для решения этой задачи ученик написал такую программу:
Var n, m: longint;
d: integer;
begin
read(n);
m := 0;
while n>=1 do begin
d := n mod 10;
if d > 1 then begin
m := 10*d + m;
end;
n:= (n – d) div 10;
end;
write(m);
end.
Последовательно выполните следующее.
Напишите, что выведет эта программа при вводе числа 1984.
Приведите пример числа, при вводе которого программа выдаст верный ответ.
Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки: выпишите строку, в которой сделана ошибка, и приведите правильный вариант
строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.
25) Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 1000. Элемент массива называется хорошим, если это двузначное число, причём цифра в разряде десятков больше, чем цифра в разряде единиц. Опишите на одном из языков программирования алгоритм, позволяющий найти и вывести сумму всех хороших элементов массива.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
const N=30;
var a: array [1..N] of integer;
i, j, s: integer;
begin
for i:=l to N do
readln(a[i]) ;
end.
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может
добавить в кучу один камень или
увеличить количество камней в куче в три раза и убрать из кучи 1 камень.
Например, имея кучу из 10 камней, за один ход можно получить кучу из 11 или 29 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 33. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 33 или больше камней.
В начальный момент в куче было S камней, 1 ≤ S ≤ 32.
1. При каких S: 1а) Петя выигрывает первым ходом; 1б) Ваня выигрывает первым ходом?
2. Назовите два значения S, при которых Петя может выиграть своим вторым ходом?
3. Назовите значение S, при котором Ваня выигрывает своим первым или вторым ходом.
Для заданной последовательности неотрицательных целых чисел необходимо найти минимальную сумму двух её элементов, номера которых различаются не менее чем на 4. Значение каждого элемента последовательности не превышает 1000. Количество элементов последовательности не превышает 10000.
Задача А (2 балла). Напишите на любом языке программирования программу для решения поставленной задачи, в которой входные данные будут запоминаться
в массиве, после чего будут проверены все возможные пары элементов.
Задача Б (4 балла). Напишите программу для решения поставленной задачи, которая будет эффективна как по времени, так и по памяти (или хотя бы по одной из этих
характеристик).
Программа считается эффективной по времени, если время работы программы пропорционально количеству элементов последовательности N, т.е. при увеличении N в k раз время работы программы должно увеличиваться не более чем в k раз. Программа считается эффективной по памяти, если размер памяти, использованной в программе для хранения данных, не зависит от числа N и не превышает 1 килобайта.
Входные данные представлены следующим образом. В первой строке
задаётся число N – общее количество элементов последовательности.
Гарантируется, что
N > 4. В каждой из следующих N строк задаётся одно неотрицательное целое
число – очередной элемент последовательности.
Пример входных данных:
7
10
45
55
245
35
25
10
Программа должна вывести одно число – описанную в условии сумму.
Пример выходных данных для приведённого выше примера входных данных:
20
