ЕГЭ, вопрос 20: П. Анализ алгоритма, содержащего цикл и ветвление

Проверяемые элементы содержания по спецификации (2019): Анализ алгоритма, содержащего цикл и ветвление

Кодификатор 1.6.1/1.1.4. Уровень сложности П, 1 балл.

Время выполнения – 5 минут. [Было 6, сложность увеличилась]

Достаточно сложное логическое задание. На данный момент я затрудняюсь однозначно оценить время.

Во-первых, здесь использованы операторы нахождения остатка и целой части от деления.

Во-вторых, программа написана уже грамотно: определены переменные с типами, описан ввод числа и вывод результатов. Это все отвлекает малоискушенного программиста.

В-третьих, ВСЕ програмы содержат ошибки оформления. Даже здесь при первом заполнении их было исправлено более десятка на 2 задания. Увидим, как вы будете рассматривать A = 0 и A=0 после работы с VBA.

На первой стадии надо отбросить все "лишнее", перечисленное выше. Останется цикл WHILE (ПОКА). Плюс его условие, которое надо четко осознать, записать на подкорку и покрутиться по нему в цикле.

Далее надо понять, какова закономерность изменения переменных в цикле. В качестве возможного примера (см. т2-2012):

В результате выводится А (число "кругов") и В (сумма остатков от деления на 10).

Задание 1. Сколько раз повторится цикл? Два раза (А=2). Но это зависит от изменения Х, а от данной переменной просто "отрубается последний разряд". Это означает, что число Х должно быть двузначным.

В переменную В накапливается сумма "отрубленных хвостов" и она должна быть равна 10. Из двух слагаемых. Для минимального Х. Дальше продолжать не вижу смысла.

Задание 2. Те же закономерности, но Х должен быть наибольшим.

Задания

  1. Демо 2020 (20). Ниже на пяти языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа: L и M. Укажите наименьшее число x, при вводе которого алгоритм печатает сначала 6, а потом 7.
    БейсикPython
    DIM X, L, M AS INTEGER
    INPUT X
    L = 0
    M = 0
    WHILE X > 0
      M = M + 1
      IF X MOD 2 = 0 THEN
        L = L + 1
      ENDIF
      X = X \ 2
    WEND
    PRINT L
    PRINT M
    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
    Алгоритмический языкПаскаль
    алг
    нач
    цел x, L, M
    ввод x
    L := 0
    M := 0
    нц пока x > 0
      M := M + 1
      если mod(x,2) = 0 то
        L := L + 1
      все
      x := div(x,2)
    кц
    вывод L, нс, 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.
    C++
    #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. Демо 2019 (20). Ниже на пяти языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа: L и M. Укажите наименьшее число x, при вводе которого алгоритм печатает сначала 5, а потом 7.
    БейсикPython
    DIM X, L, M AS INTEGER
    INPUT X
    L = 0
    M = 0
    WHILE X > 0
      M = M + 1
      IF X MOD 2 <> 0 THEN
        L = L + 1
      END IF
      X = X \ 2
    WEND
    PRINT L
    PRINT M
    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)
    Алгоритмический языкПаскаль
    алг
    нач
    цел x, L, M
    ввод x
    L := 0
    M := 0
    нц пока x > 0
      M := M + 1
      если mod(x,2) <> 0
        то
        L := L + 1
      все
      x := div(x,2)
    кц
    вывод L, нс, 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
    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;
    }

  3. Демо 2018 (20). Ниже на пяти языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа: L и M. Укажите наименьшее число x, при вводе которого алгоритм печатает сначала 5, а потом 7.
    БейсикPython
    DIM X, L, M AS INTEGER
    INPUT X
    L = 0
    M = 0
    WHILE X > 0
      M = M + 1
      IF X MOD 2 <> 0 THEN
        L = L + 1
      END IF
      X = X \ 2
    WEND
    PRINT L
    PRINT M
    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)
    Алгоритмический языкПаскаль
    алг
    нач
    цел x, L, M
    ввод x
    L := 0
    M := 0
    нц пока x > 0
      M := M + 1
      если mod(x,2) <> 0
      то
        L := L + 1
      все
      x := div(x,2)
    кц
    вывод L, нс, 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;
    }

  4. D2018 (20). Ниже на пяти языках программирования записан алгоритм. Получив на вход натуральное десятичное число x, этот алгоритм печатает два числа: L и M. Укажите наибольшее число x, при вводе которого алгоритм печатает сначала 14, а потом 3.
    БейсикPython
    DIM X, L, M AS INTEGER
    INPUT X
    L = 0
    M = 0
    WHILE X > 0
      M = M + 1
      IF X MOD 2 <> 0 THEN
        L = L + X MOD 8
      END IF
      X = X \ 8
    WEND
    PRINT L
    PRINT M
    x = int(input())
    L = 0
    M = 0
    while x > 0:
      M = M + 1
      if x % 2 != 0:
        L = L + x % 8
      x = x // 8
    print(L)
    print(M)
    Алгоритмический языкПаскаль
    алг
    нач
    цел x, L, M
    ввод x
    L := 0
    M := 0
    нц пока x > 0
      M := M + 1
      если mod(x,2) <> 0
      то
        L := L + mod(x,8)
      все
      x := div(x,8)
    кц
    вывод L, нс, 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 + x mod 8;
      x := x div 8
    end;
    writeln(L);
    writeln(M)
    end.
    C++
    #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 + x % 8;
      }
      x = x / 8;
    }
    cout << L << endl << M << endl;
    return 0; }

  5. R2018 (20). Укажите наибольшее десятичное число, при вводе которого на экране сначала напечатается 3, а затем 6.
    БейсикPython
    DIM X, L, M AS INTEGER
    INPUT X
    L = 0
    M = 0
    WHILE X > 0
      L = L + 1
      IF X MOD 2 <> 0 THEN
        M = M + (X MOD 8)
      ENDIF
      X = X \ 8
    WEND
    PRINT L
    PRINT M
    x = int(input())
    L = 0
    M = 0
    while x > 0 :
      L = L+1
      if (x % 2) != 0:
        M = M + x % 8
      x = x // 8
    print(L) print(M)
    Си++Паскаль
    #include <iostream>
    using namespace std;
    int main(void)
    {
    int L, M, x;
    cin >> x;
    L = 0;
    M = 0;
    while (x > 0) {
      L = L + 1;
      if (x % 2 != 0) {
        M = M + x % 8;
      }
      x = x / 8;
    }
    cout << L << " " << M;
    }
    var x, L, M: integer;
    begin
    readln(x);
    L:=0; M:=0;
    while x > 0 do begin
      L:=L + 1;
      if (x mod 2) <> 0 then
        M:= M + x mod 8;
      x:= x div 8;
    end;
    writeln(L);
    write(M);
    end.

  6. Демо 2017 (20). Ниже на пяти языках программирования записан алгоритм. Получив на вход натуральное число x, этот алгоритм печатает число R. Укажите такое число x, при вводе которого алгоритм печатает двузначное число, сумма цифр которого равна 16. Если таких чисел x несколько, укажите наименьшее из них.
    БейсикPython
    DIM X,D,R AS LONG
    INPUT X
    R = 0
    WHILE X>0
      D = X MOD 10
      R = 10*R + D
      X = X \ 10
    WEND
    PRINT R
    x = int(input())
    R = 0
    while x>0:
      d = x % 10
      R = 10*R + d
      x = x // 10
    print(R)
    Алгоритмический языкПаскаль
    алг
    нач
    цел x, d, R
    ввод x
    R := 0
    нц пока x>0
      d := mod(x, 10)
      R := 10*R + d
      x := div(x, 10)
    кц
    вывод R
    кон
    var
    x,d,R: longint;
    begin
    readln(x);
    R := 0;
    while x>0 do
    begin
      d := x mod 10;
      R := 10*R + d;
      x := x div 10
    end;
    writeln(R)
    end.
    Си
    #include <stdio.h>
    int main()
    {
    long x,d,R;
    scanf("%ld", &x);
    R = 0;
    while (x>0)
    {
      d = x % 10;
      R = 10*R + d;
      x = x / 10;
    }
    printf("%ld", R);
    return 0;
    }

  7. Демо 2016 (20). Ниже на пяти языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает число M. Известно, что x > 100. Укажите наименьшее такое (т.е. большее 100) число x, при вводе которого алгоритм печатает 26.
    БейсикPython
    DIM X, L, M AS INTEGER
    INPUT X
    L = X
    M = 65
    IF L MOD 2 = 0 THEN
      M = 52
    ENDIF
    WHILE L <> M
      IF L > M THEN
        L = L – M
      ELSE
        M = M – L
      ENDIF
    WEND
    PRINT M
    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)
    Алгоритмический языкПаскаль
    алг
    нач
    цел x, L, M
    ввод x
    L := x
    M := 65
    если mod(L,2)=0
    то
      M := 52
    все
    нц пока L <> M
      если L > M
      то
        L := L – M
      иначе
        M := M – L
      все
    кц
    вывод 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<stdio.h>
    void main()
    {
    int x, L, M;
    scanf("%d", &x);
    L = x;
    M = 65;
    if (L % 2 == 0)
      M = 52;
    while (L != M){
      if(L > M)
        L = L - M;
      else
        M = M - L;
    }
    printf("%d", M);
    }

  8. Демо 2015 (20). Ниже на пяти языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа: a и b.
    Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 15.
    БейсикPython
    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
    x = int(input())
    a = 0
    b = 1
    while x > 0:
      a = a + 1
      b = b * (x % 10)
      x = x // 10
    print(a)
    print(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
    кон
    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<stdio.h>
    int main(void)
    {
    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("%d\n%d", a, b);
    }

  9. Демо 2014 (B8). Ниже на четырёх языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа: a и b. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 13, а потом 5.
    БейсикПаскаль
    DIM X, A, B, C AS INTEGER
    INPUT X
    A = 0: B = 10
    WHILE X > 0
      C = X MOD 10
      A = A + C
      IF C < B THEN B = C
      X = X \ 10
    WEND
    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<stdio.h>
    void main()
    {
    int x, a, b, c;
    scanf("%d", &x);
    a = 0; b = 10;
    while (x>0) {
      c = x%10;
      a = a+c;
      if (c<b)
        b = c;
      x = x/10;
    }
    printf("%d\n%d", a, b);
    }
    алг
    нач
    цел x, a, b, c
    ввод x
    a := 0; b := 10
    нц пока x>0
      c := mod(x,10)
      a := a+c
      если c<b
        то b := c
      все
      x := div(x,10)
    кц
    вывод a, нс, b
    кон

  10. Демо 2013 (B5). Определите, что будет напечатано в результате выполнения программы (записанной ниже на разных языках программирования).
    БейсикПаскаль
    DIM N, S AS INTEGER
    N = 0
    S = 0
    WHILE S <= 35
      N = N + 1
      S = S + 4
    WEND
    PRINT N
    var n, s: integer;
    begin
    n := 0;
    s := 0;
    while s <= 35 do
    begin
      n := n + 1;
      s := s + 4
    end;
    write(n)
    end.
    СиАлгоритмический язык
    #include<stdio.h>
    void main()
    {
    int n, s;
    n = 0;
    s = 0;
    while (s <= 35)
    {
      n = n + 1;
      s = s + 4;
    }
    printf("%d", n);
    }
    алг
    нач
    цел n, s
    n := 0
    s := 0
    нц пока s <= 35
      n := n + 1
      s := s + 4
    кц
    вывод n
    кон

  11. Демо 2013 (B8). Ниже на четырёх языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа: a и b. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 21.
    БейсикПаскаль
    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<stdio.h>
    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("%d\n%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
    кон

  12. Демо 2012 (B7). Ниже на 4-х языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа L и M. Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 7.
    БейсикПаскаль
    DIM X, L, M AS INTEGER
    INPUT X
    L=0: M=0
    WHILE X > 0
      L = L+1
      IF M < (X MOD 10) THEN
        M = X MOD 10
      ENDIF
      X = X \ 10
    WEND
    PRINT L
    PRINT M
    var x, L, M: integer;
    begin
    readln(x);
    L := 0; M := 0;
    while x>0 do
    begin
      L := L+1;
      if M < (x mod 10) then
      begin
        M := x mod 10;
      end;
      x := x div 10;
    end;
    writeln(L); write(M);
    end.
    СиАлгоритмический язык
    #include<stdio.h>
    void main()
    {
    int x, L, M;
    scanf("%d", &x);
    L=0; M=0;
    while (x>0){
      L=L+1;
      if M < x % 10 {
        M = x % 10
      }
      x= x/10;
    }
    printf("%d\n%d", L, M);
    }
    алг
    нач
    цел x, L, M
    ввод x
    L := 0; M := 0
    нц пока x>0
      L := L+1
      если M < mod(x,10)
      то
        M := mod(x,10)
      все
      x := div(x,10)
    кц
    вывод L, нс, M
    кон

  13. Демо 2011 (A17). В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, записанный на разных языках программирования, в котором значения элементов массива сначала задаются, а затем меняются.
    БейсикПаскаль
    FOR i=0 TO 10
      A(i)=i-1
    NEXT i
    FOR i=10 TO 1 STEP -1
      A(i-1)=A(i)
    NEXT i
    for i:=0 to 10 do
      A[i]:=i-1;
    for i:=10 downto 1 do
      A[i-1]:=A[i];
    СиАлгоритмический язык
    for (i=0;i<=10;i++)
    A[i]=i-1;
    for (i=10;i>=1;i--)
    A[i-1]=A[i];
    нц для i от 0 до 10
    A[i]:=i-1
    кц
    нц для i от 10 до 1 шаг -1
    A[i-1]:=A[i]
    кц
    Чему окажутся равны элементы этого массива?
    1) 9 9 9 9 9 9 9 9 9 9 9
    2) 0 1 2 3 4 5 6 7 8 9 9
    3) 0 1 2 3 4 5 6 7 8 9 10
    4) -1 -1 0 1 2 3 4 5 6 7 8
  14. Демо 2010 ().
  15. Демо 2009 ().
  16. (т2-2012/1).Ниже на 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
    

  17. (т2-2012/2).Ниже на 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
    

  18. с114 (20). Ниже на различных языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b. Сколько существует таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 0?
    БейсикПаскаль
    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<stdio.h>
    int 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("%d\n%d", a, b);
    return 0;
    }
    алг
    нач
    цел x, a, b
    ввод x
    a := 0; b := 1
    нц пока x > 0
      a := a+1
      b := b*mod(x,10)
      x := div(x,10)
    кц
    вывод a, нс, b
    кон
    Python
    x=int(input())
    a=0; b=1
    while x > 0:
      a = a+1
      b = b*(x%10)
      x = x//10
    print(a,"\n",b)

  19. с124 (20). Ниже на различных языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b. Сколько существует таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 24?
    БейсикПаскаль
    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<stdio.h>
    int 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("%d\n%d", a, b);
    return 0;
    }
    алг
    нач
    цел x, a, b
    ввод x
    a := 0; b := 1
    нц пока x > 0
      a := a+1
      b := b*mod(x,10)
      x := div(x,10)
    кц
    вывод a, нс, b
    кон
    Python
    x=int(input())
    a=0; b=1
    while x > 0:
      a = a+1
      b = b*(x%10)
      x = x//10
    print(a,"\n",b)

  20. с113 (20). Ниже на пяти языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 16.
    БейсикПаскаль
    DIM X, A, B, D AS INTEGER
    INPUT X
    A = 0; B = 0; D = 0
    WHILE X > 0
      IF (D MOD 2) = 0 THEN
        A = A + (X MOD 10)
      ELSIF
        B = B + (X MOD 10)
      END IF
      X = X \ 10
      D = D + 1
    WEND
    PRINT A
    PRINT B
    program B14;
    var x, a, b, d: integer;
    begin
    readln(x);
    a := 0; b := 0; d := 0;
    while x > 0 do
    begin
      if d mod 2= 0 then
        a := a+ x mod 10
      else
        b := b+ x mod 10;
      x := x div 10;
      d:=d+1
      end;
    writeln(a); write(b);
    end.
    СиАлгоритмический язык
    #include
    int main(){
    int x, a, b, d;
    scanf("%d", &x);
    a = 0; b = 0; d = 0;
    while (x > 0) {
      if (d%2 == 0) {
        a = a+x%10;
      }
      else{
        b = b+x%10;
      }
      x = x / 10;
      d++;
    }
    printf("%d\n%d", a, b);
    return 0;
    }
    алг
    нач
    цел x, a, b, d
    ввод x
    a := 0; b := 0; d := 0
    нц пока x > 0
      если mod(d,2)=0 то
        a := a + mod(x,10)
      иначе
        b := b + mod(x,10)
      все
      x := div(x,10)
      d:=d+1
    кц
    вывод a, нс, b
    кон
    Python
    x = int(input())
    a=0; b=0; d = 0
    while x>0:
      if d%2==0:
        a += x%10
      else:
        b += x%10
      x = x//10
      d = d+1
    print(a, "\n", b)

  21. с123 (20). Ниже на пяти языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 4, а потом 17.
    БейсикПаскаль
    DIM X, A, B, D AS INTEGER
    INPUT X
    A = 0; B = 0; D = 0
    WHILE X > 0
      IF (D MOD 2) = 0 THEN
        A = A + (X MOD 10)
      ELSIF
        B = B + (X MOD 10)
      END IF
      X = X \ 10
      D = D + 1
    WEND
    PRINT A
    PRINT B
    program B15;
    var x, a, b, d: integer;
    begin
    readln(x);
    a := 0; b := 0; d := 0;
    while x > 0 do
    begin
      if d mod 2 = 0 then
        a := a + x mod 10
      else
        b := b + x mod 10;
      x := x div 10;
      d:=d + 1
    end;
    writeln(a); write(b);
    end.
    СиАлгоритмический язык
    #include <stdio.h>
    int main(){
    int x, a, b, d;
    scanf("%d", &x);
    a = 0; b = 0; d = 0;
    while (x > 0) {
      if (d%2 == 0) {
        a = a+x%10;
      }
      else{
        b = b+x%10;
      }
      x = x / 10;
      d++;
    }
    printf("%d\n%d", a, b);
    return 0;
    }
    алг
    нач
    цел x, a, b, d
    ввод x
    a := 0; b := 0; d := 0
    нц пока x > 0
      если mod(d,2)=0 то
        a := a + mod(x,10)
      иначе
        b := b + mod(x,10)
      все
      x := div(x,10)
      d:=d+1
    кц
    вывод a, нс, b
    кон
    Python
    x = int(input())
    a=0; b=0; d = 0
    while x>0:
      if d%2==0:
        a += x%10
      else:
        b += x%10
      x = x//10
      d = d+1
    print(a, "\n", b)

  22. с112 (20).
  23. с122 (20).
  24. ш115 (20).
  25. ш125 (20).
  26. ш114 (20).
  27. ш124 (20).
  28. ш113 (20).
  29. ш123 (20).
  30. ш112 (20).
  31. ш122 (20).
  32. ш111 (20).
  33. ш121 (20).

Copyright © 1993–2020 Мацкявичюс Д.А. Все права защищены.
Никакая часть сайта не может быть воспроизведена никаким способом без письменного разрешения правообладателя и явной ссылки на данный ресурс.