×
  • 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. Программа на обработку массива
  • Спасибо за внимание
  • Подготовка к ЕГЭ по Информатике

    Задания на тему "Анализ программ с циклами".


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

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

    2) Получив на вход число x, этот алгоритм печатает число M. Известно, что x > 100. Укажите наименьшее такое (т. е. большее 100) число x, при вводе которого алгоритм печатает 16.

    x = int(input())
    L = x - 14
    M = x + 18
    while L != M:
      if L > M:
         L = L - M
      else:
         M = M - L
    print(M)
    var x, L, M: longint;
    begin
      readln(x);
      L := x-14;
      M := x+18;
      while L <> M do
         if L > M then
           L := L - M
         else
           M := M – L;
      writeln(M);
    end.
    #include <iostream>
    using namespace std;
    void main()
    {
      int x, L, M;
      cin >> x;
      L = x - 14;
      M = x + 18;
      while (L != M) {
           if (L > M) 
                L = L - M;
           else 
                M = M - L;
    	}
      cout << M;
    }

    3) Получив на вход число x, этот алгоритм печатает число M. Известно, что x > 100. Укажите наименьшее такое (т. е. большее 100) число x, при вводе которого алгоритм печатает 35.

    x = int(input())
    L = x - 20
    M = x + 15
    while L != M:
      if L > M:
         L = L - M
      else:
         M = M - L
    print(M)
    var x, L, M: longint;
    begin
      readln(x);
      L := x-20;
      M := x+15;
      while L <> M do
         if L > M then
           L := L - M
         else
           M := M – L;
      writeln(M);
    end.
    #include <iostream>
    using namespace std;
    void main()
    {
      int x, L, M;
      cin >> x;
      L = x-20;
      M = x+15;
      while (L != M) {
           if (L > M) 
                L = L - M;
           else 
                M = M - L;
    	}
      cout << M;
    }

    4) Ниже на трех языках программирования записан алгоритм. Получив на вход натуральное десятичное число 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;
    }

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

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

    6) Ниже на трех языках программирования записан алгоритм. Получив на вход число х, этот алгоритм печатает два числа a и b. Укажите наименьшее из таких чисел х, при вводе которых алгоритм печатает сначала 2, а потом 37.

    x = int(input())
    a = 0
    b = 0
    while x > 0:
      a = a + 1
      b = b + (x % 100)
      x = x // 100
    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 100);
        x := x div 100;
      end;
      writeln(a); write(b);
    end.
    #include <iostream>
    using namespace std;
    void main()
    {
    	int x, a, b;
    	cin >> x;
    	a = 0;
    	b = 0;
    	while (x > 0) {
    		a = a + 1;
    		b = b + (x % 100);
    		x = x / 100;
    	}
    	cout << a;
    	cout << b;
    }

    7) Ниже на трех языках программирования записан алгоритм. Получив на вход число x, эта программа печатает два числа a и b. Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 24.

    x = int(input())
    a = 0
    b = 1
    while x > 0:
       a = a + 1
       b = b * (x % 5)
       x = x // 5
    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 5);
        x := x div 5;
      end;
      writeln(a); write(b);
    end.
    #include <iostream>
    using namespace std;
    void main()
    {
    	int x, a, b;
    	cin >> x;
    	a = 0;
    	b = 1;
    	while (x > 0) {
    		a = a + 1;
    		b = b * (x % 5);
    		x = x / 5;
    	}
    	cout << a;
    	cout << b;
    }

    8) Ниже на трех языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает число M. Известно, что х > 40. Укажите наименьшее такое (т.е. большее 40) число х, при вводе которого алгоритм печатает 2.

    x = int(input())
    L = x
    M = 12
    if L % 2 == 0:
        M = 24
    while L != M:
        if L > M:
            L = L - M
        else:
            M = M - L
    print(M)
    var x, L, M: integer;
    begin
        readln(x);
        L : = x;
        M := 12;
        if L mod 2 = 0 then
            M := 24;
        while L <> M do
            if L > M then
                L := L - M
            else
                M := M - L;
        writeln(M);
    end.
    #include <iostream>
    using namespace std;
    void main()
    {
    	int x, L, M;
    	cin >> x;
    	L = x;
    	M = 12;
    	if (L % 2 == 0) M = 24;
    	while (L != M) {
    		if (L > M) L = L - M;
    		else M = M - L;
    	}
    	cout << M;
    }

    9) Ниже на трех языках программирования записан алгоритм. Получив на вход число x, эта программа печатает два числа a и b. Укажите наименьшее пятизначное число x, при вводе которых алгоритм печатает сначала 2, а потом 4.

    x = int(input())
    a = 0
    b = 0
    while x > 0:
        y = x % 10
        if y > 3: 
           a = a + 1
        if y < 7: 
           b = b + 1
        x = x // 10
    print(a)
    print(b)
    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.
    #include <iostream>
    using namespace std;
    void main()
    {
    	int x, y, a, b;
    	a = 0;
    	b = 0;
    	cin >> x;
    	while (x > 0) {
    		y = x % 10;
    		if (y > 3) a = a + 1;
    		if (y < 7) b = b + 1;
    		x = x / 10;
    	}
    	cout << a;
    	cout << b;
    }

    10) Ниже на трех языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает число M. Известно, что x > 100. Укажите наименьшее такое (т.е. большее 100) число x, при вводе которого алгоритм печатает 26.

    x = int(input())
    L = x
    M = 65
    if L % 2 == 0:
      M = 52
    while L != M:
      if L > M:
         L = L - M
      else:
         M = M - L
    print(M)
    var x, L, M: integer;
    begin
      readln(x);
      L := x;
      M := 65;
      if L mod 2 = 0 then
        M := 52;
      while L <> M do
        if L > M then
          L := L - M
        else
          M := M – L;
      writeln(M);
    end.
    #include <iostream>
    using namespace std;
    void main()
    {
    	int x, L, M;
    	cin >> x;
    	L = x;
    	M = 65;
    	if (L % 2 == 0) M = 52;
    	while (L != M) {
    		if (L > M) L = L - M;
    		else M = M - L;
    	}
    	cout << M;
    }

    11) Ниже на трех языках программирования записан алгоритм. Получив на вход число х, этот алгоритм печатает два числа a и b. Укажите наибольшее из таких чисел х, при вводе которых алгоритм печатает сначала подумать 2, а потом 150.

    x = int(input())
    a = 0
    b = 0
    while x > 0:
      a = a + 1
      b = b + (x % 100)
      x = x // 100
    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 100);
        x := x div 100;
      end;
      writeln(a); write(b);
    end.
    #include <iostream>
    using namespace std;
    void main()
    {
    	int x, a, b;
    	cin >> x;
    	a = 0;
    	b = 0;
    	while (x > 0) {
    		a = a + 1;
    		b = b + (x % 100);
    		x = x / 100;
    	}
    	cout << a;
    	cout << b;
    }

    12) Ниже на трех языках программирования записан алгоритм. Получив на вход число x, эта программа печатает два числа a и b. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 4, а потом 2.

    x = int(input())
    a = 0 
    b = 0
    while x > 0: 
       c =  x % 2
       if c == 0: 
          a =  a + 1
       else:
          b =  b + 1
       x =  x // 10  
    print(a)
    print(b)
    var x, a, b, c: integer;
    begin
      readln(x);
      a := 0; 
      b := 0;
      while x > 0 do begin
        c := x mod 2;
        if c = 0 then a := a + 1
        else b := b + 1;
        x := x div 10;
      end;
      writeln(a); write(b);
    end.
    #include <iostream>
    using namespace std;
    void main()
    {
    	int x, a, b, c;
    	cin >> x;
    	a = 0;
    	b = 0;
    	while (x > 0) {
    		c = x % 2;
    		if (c == 0) a = a + 1;
    		else b = b + 1;
    		x = x / 10;
    	}
    	cout << a;
    	cout << b;
    }

    13) Ниже на трех языках программирования записан алгоритм. Получив на вход число x, эта программа печатает два числа a и b. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 4, а потом 13.

    x = int(input())
    a = 0
    b = 0
    while x > 0:
       a = a + 1
       b = b + (x % 7)
       x = x // 7
    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 7);
        x := x div 7;
      end;
      writeln(a); write(b);
    end.
    #include <iostream>
    using namespace std;
    void main()
    {
    	int x, a, b;
    	cin >> x;
    	a = 0;
    	b = 0;
    	while (x > 0) {
    		a = a + 1;
    		b = b + (x % 7);
    		x = x / 7;
    	}
    	cout << a;
    	cout << b;
    }

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

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

    15) Ниже на трех языках программирования записан алгоритм. Получив на вход число x, эта программа печатает два числа a и b. Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 2.

    x = int(input())
    a = 0 
    b = 0
    while x > 0: 
       c =  x % 2
       if c == 0: 
          a =  a + 1
       else:
          b =  b + 1
       x =  x // 10  
    print(a)
    print(b)
    var x, a, b, c: integer;
    begin
      readln(x);
      a := 0; 
      b := 0;
      while x > 0 do begin
        c := x mod 2;
        if c = 0 then a := a + 1
        else b := b + 1;
        x := x div 10;
      end;
      writeln(a); write(b);
    end.
    #include <iostream>
    using namespace std;
    void main()
    {
    	int x, a, b, c;
    	cin >> x;
    	a = 0;
    	b = 0;
    	while (x > 0) {
    		c = x % 2;
    		if (c == 0) a = a + 1;
    		else b = b + 1;
    		x = x / 10;
    	}
    	cout << a;
    	cout << b;
    }

    16) Ниже на трех языках программирования записан алгоритм. Получив на вход число x, эта программа печатает два числа a и b. Укажите наименьшее из чисел x, при вводе которых алгоритм печатает сначала 14, а потом 6.

    x = int(input())
    a = 0
    b = 10
    while x > 0:
       c = x % 10
       a = a + c
       if c < b:
          b = c
       x = x // 10
    print(a)
    print(b)
    var x, a, b, c: integer;
    begin
      readln(x);
      a := 0; 
      b := 10;
      while x > 0 do begin
        c := x mod 10;
        a := a + c;
        if c < b then b := c;
        x := x div 10;
      end;
      writeln(a); write(b);
    end.
    #include <iostream>
    using namespace std;
    void main()
    {
    	int x, a, b, c;
    	cin >> x;
    	a = 0;
    	b = 10;
    	while (x > 0) {
    		c = x % 10;
    		a = a + c;
    		if (c == b) b = c;
    		x = x / 10;
    	}
    	cout << a;
    	cout<<b;
    }

    17) Ниже на трех языках программирования записан алгоритм. Получив на вход число x, эта программа печатает два числа a и b. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 3, при условии, что число должно состоять из цифр, больших 5

    x = int(input())
    a = 0 
    b = 0
    while x > 0: 
       c =  x % 2
       if c == 0: 
          a =  a + 1
       else:
          b =  b + 1
       x =  x // 10  
    print(a)
    print(b)
    var x, a, b, c: integer;
    begin
      readln(x);
      a := 0; 
      b := 0;
      while x > 0 do begin
        c := x mod 2;
        if c = 0 then a := a + 1
        else b := b + 1;
        x := x div 10;
      end;
      writeln(a); write(b);
    end.
    #include <iostream>
    using namespace std;
    void main()
    {
    	int x, a, b, c;
    	cin >> x;
    	a = 0;
    	b = 0;
    	while (x > 0) {
    		c = x % 2;
    		if (c == 0) a = a + 1;
    		else b = b + 1;
    		x = x / 10;
    	}
    	cout << a;
    	cout<<b;
    }

    18) Ниже на трех языках программирования записан алгоритм. Получив на вход число x, эта программа печатает два числа a и b. Укажите наименьшее пятизначное число x, при вводе которых алгоритм печатает сначала 5, а потом 3.

    x = int(input())
    a = 0
    b = 0
    while x > 0:
        y = x % 10
        if y > 4: 
           a = a + 1
        if y < 6: 
           b = b + 1
        x = x // 10
    print(a)
    print(b)
    var x, y, a, b: longint;
    begin
      a := 0;
      b := 0;
      readln(x);
      while x > 0 do begin
        y := x mod 10;
        if y > 4 then a := a + 1;
        if y < 6 then b := b + 1;
        x := x div 10;
      end;
      writeln(a);
      writeln(b);
    end.
    #include <iostream>
    using namespace std;
    void main()
    {
    	int x, y, a, b;
    	a = 0;
    	b = 0;
    	cin >> x;
    	while (x > 0) {
    		y = x % 10;
    		if (y > 4) a = a + 1;
    		if (y < 6) b = b + 1;
    		x = x / 10;
    	}
    	cout << a;
    	cout << b;
    }

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

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

    Задания взяты из базы данных ФИПИ, сайта К.Полякова или придуманы мною