М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
1dianalady1
1dianalady1
03.04.2022 20:41 •  Информатика

B. рекурсия из ЕГЭ Ограничение времени 2 секунды
Ограничение памяти 64Mb
Ввод recursion.in
Вывод recursion.out
В этом году выпускники одиннадцатых классов будут сдавать ЕГЭ по информатике на компьютерах. Одна из задач предполагает умение анализировать работу рекурсивного алгоритма. Мы предлагаем Вам ’олимпиадную’ версию такой задачи.
Исходный текст программы, используемой в задаче, размещен на сайте подготовки к ЕГЭ ’kpolyakov.spb.ru’

Рассмотрим функцию, приведенную ниже на трех языках программирования.
Python
def F( n ):
print(n+1)
if n > 1:
print(2*n)
F(n-1)
F(n-3)

Pascal
procedure F( n: integer );
begin
writeln(n+1);
if n > 1 then begin
writeln(2*n);
F(n-1);
F(n-3);
end;
end;

C++
void F( int n )
{
cout 1 ) {
cout << 2*n << endl;
F(n-1);
F(n-3);
}
}
Напишите программу, которая определяет, сколько двоек выводится на экран в результате вызова функции F(z). Ваша программа должна учитывать все цифры ’2’, выводимые программой, даже если она в составе числа.

Формат ввода
В единственной строке входного файла recursion.in записано число z. (
1

z

5
0
)
Формат вывода
В файл recursion.out следует вывести единственное число - ответ к задаче.

👇
Ответ:

кра6ввш56вкк6вшк6ыык6вш6ыгн3

4,5(36 оценок)
Открыть все ответы
Ответ:
Helpmeplease1114
Helpmeplease1114
03.04.2022
Второе красиво решил через строки MinGW GCC 4.7.1
#include <iostream>
#include <string>
#include <locale.h>
using namespace std;
char max(char a, char b)
{
return (a > b) ? a : b;
}
char min(char a, char b)
{
return (a < b) ? a : b;
}
int main(void)
{
setlocale(LC_ALL,"rus");
string s;
cout<<"Введите число: "; cin>>s;
char min_c = '9', max_c = '0';
for(size_t i = 0; i < s.length(); i++)
{
max_c = max(s[i], max_c);
min_c = min(s[i], min_c);
}
cout << "Наибольшая цифра: " << max_c << endl <<"Наименьшая цифра: " << min_c << endl;
return 0;
}
4,4(12 оценок)
Ответ:
mix42
mix42
03.04.2022

1) От 10 до 14

2) random(1, 10); random(-10,10); random(50,100);

3)

var a:array[1..100] of integer;

   i, p, o:integer;

begin

 p := 0;

 o := 0;

 for i := 1 to 100 do

   a[i] := random(-20, 20);

 writeln(a);

 for i := 1 to 100 do begin

   if a[i] >= 0 then p := p + 1

   else o := o + 1;

 end;

 writeln('Положительных: ' + p);

 writeln('Отрицательных: ' + o);

end.

4)

var a:array[1..20] of integer;

   b:array[1..20] of integer;

   i:integer;

begin

 randomize;

 for i := 1 to 20 do

   begin

   a[i] := random(1, 5);

   b[i] := random(1, 5);

   end;

 for i := 1 to 20 do begin

   if a[i] = b[i] then begin

   writeln('Номер: ' + i);

   writeln('Значение: ' + a[i]);

   end;

 end;

end.

4,4(99 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ