×
  • 1. Системы счисления
  • 2. Логические функции
  • 3. Анализ информационных моделей
  • 4. Файловая система и базы данных
  • 5. Кодирование и декодирование. Условие Фано
  • 6. Выполнение и анализ простых алгоритмов
  • 7. Адресация в электронных таблицах
  • 8. Анализ программ с циклами
  • 9. Скорость передачи, объем памяти, время передачи
  • 10. Кодирование, комбинаторика
  • 11. Рекурсивные алгоритмы
  • 12. Адресация в сетях TCP/IP
  • 13. Вычисление количества информации
  • 14. Анализ и выполнение алгоритмов для исполнителя
  • 15. Поиск путей в графе
  • 16. Позиционные системы счисления
  • 17. Запросы в поисковых системах
  • 18. Логические выражения и множества
  • 19. Анализ программы по работе с массивом
  • 20. Анализ программ с циклами
  • 21. Анализ программ с циклами и подпрограммами
  • 22. Динамическое программирование
  • 23. Системы логических уравнений
  • 24. Исправление фрагмента программы и ошибок
  • 25. Программа на обработку массива
  • Спасибо за внимание
  • Разбор задачи № 20. Анализ программ с циклами

    Теория по задаче

    Разбор текущей задачи
    Цикл while Python
    Обход цифр числа Python

    Условие задачи

    472) Ниже на трех языках программирования записан алгоритм. Получив на вход натуральное десятичное число x, этот алгоритм печатает два числа: L и M. Укажите наибольшее число x, при вводе которого алгоритм печатает сначала 21, а потом 3.

    x = int(input())
    L = 1
    M = 0
    while x > 0:
        M = M + 1
        if x % 2 != 0:
             L = L * (x % 8)
        x = x // 8
    print(L)
    print(M)
    var x, L, M: integer;
    begin
       readln(x);
       L := 1;
       M := 0;
       while x > 0 do begin
         M := M + 1;
         if x mod 2 <> 0 then
            L := L * (x mod 8);
         x := x div 8;
       end;
       writeln(L);
       writeln(M);
    end.
    #include <iostream> 
    using namespace std;  
    int main(){
         int x, L, M;
         cin >> x;
         L = 1;
         M = 0;
         while (x > 0) {
             M = M + 1;
             if(x % 2 != 0) {
                 L = L * (x % 8);
             }
             x = x / 8;
         }
         cout << L << endl;
         cout << M << endl;
         return 0;
    }