- Преподавателю
- Информатика
- Подготовка к ЕГЭ: Задание 20
Подготовка к ЕГЭ: Задание 20
Раздел | Информатика |
Класс | - |
Тип | Другие методич. материалы |
Автор | Селиверстова В.А. |
Дата | 26.10.2014 |
Формат | docx |
Изображения | Нет |
Задание 20
Ниже на 4-х языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b. Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 5.
Бейсик
Паскаль
DIM X, A, B AS INTEGER
INPUT X
A=0: B=1
WHILE X > 0
A = A+1
B = B*(X MOD 10)
X = X \ 10
WEND
PRINT A
PRINT B
var x, a, b: integer;
begin
readln(x);
a:=0; b:=1;
while x>0 do begin
a:=a+1;
b:=b*(x mod 10);
x:= x div 10;
end;
writeln(a); write(b);
end.
Си
Алгоритмический
#include
void main() {
int x, a, b;
scanf(«%d», &x);
a=0; b=1;
while (x>0){
a=a+1;
b=b*(x%10);
x= x/10;
}
printf(«%dn%d», a, b);
}
алг
нач
цел x, a, b
ввод x
a:=0; b:=1
нц пока x>0
a:=a+1
b:=b*mod(x,10)
x:=div(x,10)
кц
вывод a, нс, b
кон
Решение: Разберемся, что означают переменные x, a, b. При инициализации x - исходное натуральное число; a=0, b=1. Посмотрим, что происходит при выполнении основного цикла
нц пока x>0
a:=a+1
b:=b*mod(x,10)
x:=div(x,10)
кц
Значение a при каждом выполнении цикла увеличивается на 1, значит итоговое значение переменной a равно количеству выполнения цикла. От числа x при каждом выполнении цикла «отбрасывается» последняя цифра (операция x:=div(x,10) ). Таким образом, количество выполнений цикла (оно же - напечатанное значение переменной a) равно количеству цифр в исходном числе x. Значение переменой b умножается на выражение mod(x,10). Это - последняя цифра текущего значения x, т.е. очередная цифра исходного числа. Поэтому, итоговое значение переменной b равно произведению цифр исходного числа.
Пример выполнения цикла, если начальное значение x=423 приведен в таблице.
№ прохода
Начальные значения
Рабочие значения
Конечные значения
x
a
mod(x, 10)
div(x, 10)
x
a
1
423
0
1
3
42
42
1
3
2
42
1
3
2
4
4
2
6
3
4
2
6
4
0
0
3
24
Таким образом, в задаче требуется найти наибольшее трехзначное число, в котором произведение цифр равно 5. Это число - 511.
Ответ: 511
B7.2 ( ege.yandex.ru - 2) Ниже на 4-х языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 14.
Бейсик
Паскаль
DIM X, A, B AS INTEGER
INPUT X
A=0: B=1
WHILE X > 0
A = A+1
B = B*(X MOD 10)
X = X \ 10
WEND
PRINT A
PRINT B
var x, a, b: integer;
begin
readln(x);
a:=0; b:=1;
while x>0 do begin
a:=a+1;
b:=b*(x mod 10);
x:= x div 10;
end;
writeln(a); write(b);
end.
Си
Алгоритмический
#include
void main() {
int x, a, b;
scanf(«%d», &x);
a=0; b=1;
while (x>0){
a=a+1;
b=b*(x%10);
x= x/10;
}
printf(«%dn%d», a, b);
}
алг
нач
цел x, a, b
ввод x
a:=0; b:=1
нц пока x>0
a:=a+1
b:=b*mod(x,10)
x:=div(x,10)
кц
вывод a, нс, b
кон
Решение: Разберемся, что означают переменные x, a, b. При инициализации x - исходное натуральное число; a=0, b=1. Посмотрим, что происходит при выполнении основного цикла
нц пока x>0
a:=a+1
b:=b*mod(x,10)
x:=div(x,10)
кц
Значение a при каждом выполнении цикла увеличивается на 1, значит итоговое значение переменной a равно количеству выполнения цикла. От числа x при каждом выполнении цикла «отбрасывается» последняя цифра (операция x:=div(x,10) ). Таким образом, количество выполнений цикла (оно же - напечатанное значение переменной a) равно количеству цифр в исходном числе x. Значение переменой b умножается на выражение mod(x,10). Это - последняя цифра текущего значения x, т.е. очередная цифра исходного числа. Поэтому, итоговое значение переменной b равно произведению цифр исходного числа.
Таким образом, в задаче требуется найти наименьшее трехзначное число, в котором произведение цифр равно 14. Число 14 можно только одним способом представить в виде произведения трех однозначных чисел (порядок чисел здесь не учитывается): 14 = 1 х 2 х 7. Наименьшее число, составленное из этих цифр - 127.
Ответ: 127
B7.3 ( ege.yandex.ru - 3) Ниже на 4-х языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b. Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 8.
Бейсик
Паскаль
DIM X, A, B AS INTEGER
INPUT X
A=0: B=0
WHILE X > 0
A = A+1
B = B +(X MOD 10)
X = X \ 10
WEND
PRINT A
PRINT B
var x, a, b: integer;
begin
readln(x);
a:=0; b:=0;
while x>0 do begin
a:=a+1;
b:=b+(x mod 10);
x:= x div 10;
end;
writeln(a); write(b);
end.
Си
Алгоритмический
#include
void main() {
int x, a, b;
scanf(«%d», &x);
a=0; b=0;
while (x>0){
a=a+1;
b=b + (x%10);
x= x/10;
}
printf(«%dn%d», a, b);
}
алг
нач
цел x, a, b
ввод x
a:=0; b:=0
нц пока x>0
a:=a+1
b:=b+mod(x,10)
x:=div(x,10)
кц
вывод a, нс, b
кон
Решение: Разберемся, что означают переменные x, a, b. При инициализации x - исходное натуральное число; a=0, b=0. Посмотрим, что происходит при выполнении основного цикла
нц пока x>0
a:=a+1
b:=b+mod(x,10)
x:=div(x,10)
кц
Значение a при каждом выполнении цикла увеличивается на 1, значит итоговое значение переменной a равно количеству выполнения цикла. От числа x при каждом выполнении цикла «отбрасывается» последняя цифра (операция x:=div(x,10) ). Таким образом, количество выполнений цикла (оно же - напечатанное значение переменной a) равно количеству цифр в исходном числе x. К значению переменой b прибавляется значение выражения mod(x,10). Это - последняя цифра текущего значения x, т.е. очередная цифра исходного числа. Поэтому, итоговое значение переменной b равно сумме цифр исходного числа.
Таким образом, в задаче требуется найти наибольшее двузначное число, в котором сумма цифр равно 8. Это число - 80.
Ответ: 80
B7.4 ( ege.yandex.ru - 4) Ниже на 4-х языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 8.
Бейсик
Паскаль
DIM X, A, B AS INTEGER
INPUT X
A=0: B=0
WHILE X > 0
A = A+1
B = B +(X MOD 10)
X = X \ 10
WEND
PRINT A
PRINT B
var x, a, b: integer;
begin
readln(x);
a:=0; b:=0;
while x>0 do begin
a:=a+1;
b:=b+(x mod 10);
x:= x div 10;
end;
writeln(a); write(b);
end.
Си
Алгоритмический
#include
void main() {
int x, a, b;
scanf(«%d», &x);
a=0; b=0;
while (x>0){
a=a+1;
b=b + (x%10);
x= x/10;
}
printf(«%dn%d», a, b);
}
алг
нач
цел x, a, b
ввод x
a:=0; b:=0
нц пока x>0
a:=a+1
b:=b+mod(x,10)
x:=div(x,10)
кц
вывод a, нс, b
кон
Решение: Разберемся, что означают переменные x, a, b. При инициализации x - исходное натуральное число; a=0, b=0. Посмотрим, что происходит при выполнении основного цикла
нц пока x>0
a:=a+1
b:=b+mod(x,10)
x:=div(x,10)
кц
Значение a при каждом выполнении цикла увеличивается на 1, значит итоговое значение переменной a равно количеству выполнения цикла. От числа x при каждом выполнении цикла «отбрасывается» последняя цифра (операция x:=div(x,10) ). Таким образом, количество выполнений цикла (оно же - напечатанное значение переменной a) равно количеству цифр в исходном числе x. К значению переменой b прибавляется значение выражения mod(x,10). Это - последняя цифра текущего значения x, т.е. очередная цифра исходного числа. Поэтому, итоговое значение переменной b равно сумме цифр исходного числа.
Таким образом, в задаче требуется найти наименьшее двузначное число, в котором сумма цифр равно 8. Это число - 17.
Ответ: 17
B7.5 ( ege.yandex.ru - 5) Ниже на 4-х языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b. Сколько есть таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 10?
Бейсик
Паскаль
DIM X, A, B AS INTEGER
INPUT X
A=0: B=0
WHILE X > 0
A = A+1
B = B +(X MOD 10)
X = X \ 10
WEND
PRINT A
PRINT B
var x, a, b: integer;
begin
readln(x);
a:=0; b:=0;
while x>0 do begin
a:=a+1;
b:=b + x mod 10);
x:= x div 10;
end;
writeln(a); write(b);
end.
Си
Алгоритмический
#include
void main() {
int x, a, b;
scanf(«%d», &x);
a=0; b=0;
while (x>0){
a=a+1;
b=b +(x%10);
x= x/10;
}
printf(«%dn%d», a, b);
}
алг
нач
цел x, a, b
ввод x
a:=0; b:=0
нц пока x>0
a:=a+1
b:=b+mod(x,10)
x:=div(x,10)
кц
вывод a, нс, b
кон
Решение: Разберемся, что означают переменные x, a, b. При инициализации x - исходное натуральное число; a=0, b=0. Посмотрим, что происходит при выполнении основного цикла
нц пока x>0
a:=a+1
b:=b+mod(x,10)
x:=div(x,10)
кц
Значение a при каждом выполнении цикла увеличивается на 1, значит итоговое значение переменной a равно количеству выполнения цикла. От числа x при каждом выполнении цикла «отбрасывается» последняя цифра (операция x:=div(x,10) ). Таким образом, количество выполнений цикла (оно же - напечатанное значение переменной a) равно количеству цифр в исходном числе x. К значению переменой b прибавляется значение выражения mod(x,10). Это - последняя цифра текущего значения x, т.е. очередная цифра исходного числа. Поэтому, итоговое значение переменной b равно сумме цифр исходного числа.
Таким образом, в задаче требуется найти количество двузначных чисел, у которых сумма цифр равно 10. Таких чисел есть девять: 19, 28, 37, 46, 55, 64, 73, 82, 91.
Ответ: 9