Ответ:
Существует 115 значений s, при которых будет выведено значение 125.
Объяснение:
Дополним код некоторыми действиями, чтобы найти кол-во значений автоматически:
var n, s: integer;
count, i: integer;
count := 0;
for i := 0 to 10000 do begin
s := i;
while s > n do begin
if n = 125 then count += 1;
end;
writeln(count);
Код выведет число 115.
Как оно работает? В начале регистрируются переменные n, s, count, i типа integer. Далее — начинается основной код. Переменной count присваивается 0 — это и будет количество этих чисел. С помощью переменной for имитируем ввод чисел: переменной i каждый раз будет присваиваться число от 0 до 10000 (этого будет предостаточно).
Переменной s присваивается число i. Далее выполняется код из условия, а в конце проверка — равняется ли выведенное число 125. Если так, то значение переменной count увеличивается на единицу. В конце — вывод count.
Источник: megamozg.com
Задание 19-21 (НОВЫЙ АЛГОРИТМ) // ЕГЭ по информатике 2022
Сколько существует значений s подаваемых на вход программе 125
Задание ЕГЭ по информатике
Линия заданий — 6
Наслаждайтесь интересным учебником и решайте десятки тестов на Studarium,
мы всегда рады вам! =)
18902. Сколько существует значений s, подаваемых на вход программе, при которых в результате работы программы на экран будет выведено значение 125?
Проверить Показать подсказку
Верный ответ: 115
P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке 😉
При обращении указывайте id этого вопроса — 18902.
Источник: studarium.ru
ЕГЭ по информатике 2022 — Задание 6 (Метод перебора)
Сегодня посмотрим 6 задание из ЕГЭ по информатике 2022.
В этом уроке мы будем использовать метод перебора для решения различных задач из 6 задания ЕГЭ по информатике 2022.
Решать задачи будем на языке Python.
Определите, при каком наименьшем введённом значении переменной s программа выведет число 23. Для Вашего удобства программа представлена на трёх языках программирования.
var s, n: integer; begin readln(s); n := 50; while s > 0 do begin s := s div 2; n := n — 3 end; writeln(n) end.
s = int(input()) n = 50 while s > 0: s = s // 2 n = n — 3 print(n)
#include using namespace std; int main() < int s, n = 50; cin >> s; while (s > 0) < s = s / 2; n = n — 3; > cout endl; return 0; >
Решим задачу с помощью перебора.
Будем подставлять каждое число в диапазоне от 1 до 1000 в наш алгоритм с помощью цикла for. Узнаем, при каких значениях на выходе программа будет печатать число 23.
for i in range(1, 1001): s = i n = 50 while s > 0: s = s // 2 n = n — 3 if n==23: print(i)
Вместо команды input() присваиваем в переменную n очередное число. В конце программы вместо команды print() пишем условие. Печатаем только те значения переменной i, которые приводят к тому, что в переменной n будет нужный результат (число 23).
Программа напечатает следующие числа:
Самое маленькое число, которое подходит, это 256.
Ещё одна задача-ловушка из 6 задания ЕГЭ по информатике 2022.
Определите, сколько существует целых положительных значений, подаваемых на вход программе, при которых программа выведет 27.
var s, n: integer; begin readln(s); n := 3; while s*n < 243 do begin s := s div 3; n := n * 9 end; writeln(n) end.
s = int(input()) n = 3 while s*n < 243: s = s // 3 n = n * 9 print(n)
#include using namespace std; int main() < int s, n = 3; cin >> s; while (s*n < 243) < s = s / 3; n = n * 9; > cout endl; return 0; >
В этой программе подвох заключается в том, что, если мы будем перебирать числа от 1 до 1000, то программа зависнет и ничего не напечатает.
В таких случаях можно попробовать перебрать числа с 1000 до 1.
for i in range(1000, 0, -1): s = i n = 3 while s*n < 243: s = s // 3 n = n * 9 if n==27: print(i)
Третий параметр «-1» для цикла for означает, что мы перебираем числа с 1000 до 1 в обратном порядке.
Программа напечатает числа с 80 до 27.
Если проверить на небольших числа, то мы должны прибавить 1 к разнице двух чисел.
Закрепим метод перебора в 6 задании из ЕГЭ по информатике 2022.
(А.Г. Минак) Определите, при каком введённом значении переменной s программа выведет число 16.
var s, n: integer; begin readln(s); n := 0; while s*s < 101 do begin s := s + 1; n := n + 2 end; writeln(n) end.
s = int(input()) n = 0 while s*s < 101: s = s + 1 n = n + 2 print(n)
#include using namespace std; int main() < int s, n = 0; cin >> s; while (s*s < 101) < s = s + 1; n = n + 2; > cout endl; return 0; >
Здесь справляется стандартный перебор от 1 до 1000.
for i in range(1, 1001): s = i n = 0 while s*s < 101: s = s + 1 n = n + 2 if n==16: print(i)
Источник: code-enjoy.ru