Тема 22. Программирование – циклы, условия

22.02 Программирование - циклы, условия

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела программирование – циклы, условия
Решаем задачи

Ошибка.
Попробуйте повторить позже

Задача 1#16259

Укажите наибольшее десятичное значение x,  при котором программа печатает 4  и 2  .

|--------------------|---------------------------------|--------------------------|
|P ython             |C + +                            |P ascal                   |
|--------------------|---------------------------------|--------------------------|
|x  =  int(input ())   |#include  < iostream  >          |var x, L, M  : integer;   |
|L  =  0             |using namespace  std;            |begin                     |
|                    |                                 |                          |
|M   =  0            |int main () {                     | readln (x);              |
|while x  >  0 :     |  int x, L, M ;                  | L  :=  0;                 |
|                    |                                 |                          |
|  L  =  L  + 1      |  cin > >  x;                    | M  := 0;                 |
|  if x % 2  ==  0 : |  L  = 0;                        | while x  >  0 do         |
|                    |                                 |                          |
|     M  =  M   + 1  |  M  =  0;                       |   begin                   |
|                    |                                 |                          |
|  x  =  x ∕∕ 10     |  while (x >  0) {               |     L := L + 1;          |
|print(L )           |    L  =  L +  1;                |     if x mod 2 =  0 then |
|                    |                                 |                          |
|print(M  )          |    if (x % 2 ==   0) {          |       M  := M  +  1;     |
|                    |      M   =  M  +  1;            |     x :=  x div 10;       |
|                    |                                 |                          |
|                    |    }                            |   end;                   |
|                    |    x  = x ∕ 10;                 |   writeln(L);            |
|                    |                                 |                          |
|                    |  }                              |   writeln(M );           |
|                    |  cout < <  L  <<  endl  <<  M  ;|end.                      |
|                    |                                 |                          |
|                    |  return 0;                      |                          |
|                    |}                                |                          |
-----------------------------------------------------------------------------------
Показать ответ и решение
   for i in range(1000000):  
        x=i  
        L=0  
        M=0  
        while x>0:  
            L=L+1  
            if x%2==0:  
                M=M+1  
            x=x//10  
        if L==4 and M==2:  
            maxim=i  
   print(maxim)

Ответ: 9988

Ошибка.
Попробуйте повторить позже

Задача 2#26182

Укажите наименьшее из таких чисел, при вводе которых алгоритм печатает сначала 3  , а потом 0  .

|----------------------------------|---------------------------------|-----------------------------------------|
|P-ascal---------------------------|P-ython--------------------------|C-+-+------------------------------------|
|                                  |                                 |                                         |
|var x, L, M  : longint;            |x =  int(input())                |#include  < iostream  >                  |
|begin                             |L  =  0                          |using namespace  std;                    |
|                                  |                                 |                                         |
|readln(x );                        |M   = 0                          |int main ()                               |
|L := 0; M  :=  0;                  |while x >  0 :                   |{                                        |
|                                  |                                 |                                         |
|while x >  0 do begin             |     L  =  L  + 1                |int L  =  0, M  =  0, x;                  |
|     L :=  L  + 1;                |     if x % 2  ==  0 :           |cin  > >  x;                              |
|                                  |                                 |                                         |
|     if x mod  2 =  0 then        |           M  =  M   +  (x %  10) |while (x >  0) {                         |
|           M  :=  M   +  x mod 10; |     x  =  x ∕∕ 10               |     L  =  L +  1;                       |
|                                  |         ′′  ′′                   |                                         |
|     x :=  x div 10;              |print(L,  ∖n , M )               |     if (x % 2 ==   0)                   |
|end;                              |                                 |           M  =  M   + (x % 10 );        |
|                                  |                                 |                                         |
|writeln(L ); writeln(M );         |                                 |     x  =  x ∕ 10;                       |
|end.                              |                                 |}                                        |
|                                  |                                 |                                         |
|                                  |                                 |cout < <  L < <  endl < <  M   <<  endl; |
|                                  |                                 |return 0;                                |
|                                  |                                 |                                         |
----------------------------------------------------------------------}-----------------------------------------
Показать ответ и решение
for i in range(10000):
    x = i
    L = 0
    M = 0
    while x > 0:
        L = L + 1
        if x % 2 == 0:
            M = M + (x % 10)
        x = x//10
    if L == 3 and M == 0:
        print(i)
        break

Ответ: 100

Ошибка.
Попробуйте повторить позже

Задача 3#26984

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

|------------------------|----------------------------------|-------------------------------|
|P-ython-----------------|C-+-+-----------------------------|P-ascal------------------------|
|                        |                                  |                               |
|x  =  int(input())      |#include  < iostream  >           |var L, M,  x : integer;         |
|L  =  0                 |using namespace  std;             |begin                          |
|                        |                                  |                               |
|M   =  0                |int main ()                        |  readln (x );                  |
|while  x > 0 :          |{                                 |  L  :=  0; M   :=  0;          |
|                        |                                  |                               |
|   L = L +  1           |  int L, M, x;                    |  while x  >  0 do begin       |
|   if x%2  ==  1 :       |  L  =  0; M  =  0;               |    L  :=  L +  1;             |
|                        |                                  |                               |
|     M  = M  +  (x%10  ) |  cin > >  x;                     |    if x mod  2 < >  0 do      |
|   x = x∕∕10            |  while (x >  0) {                |       M  :=  M  +  x mod  10; |
|                        |                                  |                               |
|print (L )               |    L + +;                        |    x  =  x div 10;            |
|print (M  )              |    if (x % 2 ==   1)             |  end;                         |
|                        |                                  |                               |
|                        |      M  +  =  x % 10;            |  writeln(L );                 |
|                        |    x ∕ =  10;                    |  writeln(M  );                |
|                        |                                  |                               |
|                        |  }                               |end.                           |
|                        |  cout < <  L  < <  endl < <  M ; |                               |
|                        |                                  |                               |
--------------------------}-----------------------------------------------------------------|
Показать ответ и решение
for i in range(100000):
    x = i
    l = 0
    m = 0
    while x > 0:
        l += 1
        if x % 2 == 1:
            m = m + (x % 10)
        x //= 10
    if l == 5 and m == 13:
        print(i)
        break

Ответ: 10039

Ошибка.
Попробуйте повторить позже

Задача 4#27465

Укажите минимальное натуральное число, при вводе которого этот алгоритм напечатает число, сумма цифр которого равна 15  .

|-------------------------|------------------|------------------------|
|P-ascal------------------|Python------------|C-+-+-------------------|
|var x, L, M : longint;    |x = int(input())   |#include < iostream >    |
|                         |                  |                        |
|begin                    |L =  0            |using namespace std;    |
|readln(x);                |M  = 1            |int main()              |
|while x > 0 do begin      |while x > 0 :     |{                       |
|                         |                  |                        |
|   L := x mod 8 ∗ M + L; |  L = x%8 ∗M  + L |  int M, x, L = 0;      |
|   x := x div 8;          |  x = x∕∕8        |  cin >>  x;            |
|   M := M ∗ 10;           |  M  = M ∗10      |  M  =  1;              |
|end;                     |print(L)           |  while (x > 0)         |
|                         |                  |                        |
|writeln(L );               |                  |  {                     |
|end.                     |                  |    L  = x%8  ∗ M  + L; |
|                         |                  |    x = x∕8;            |
|                         |                  |                        |
|                         |                  |    M  =  M ∗ 10;       |
|                         |                  |  }                     |
|                         |                  |  cout <<  L;           |
|                         |                  |                        |
----------------------------------------------}-----------------------|
Показать ответ и решение
for i in range(100000):
    s = 0
    x = i
    L, M = 0, 1
    while x > 0:
        L = x%8 * M + L
        x //= 8
        M *= 10
    a = [int(j) for j in str(L)]
    for j in range(len(a)):
        s += a[j]
    if s == 15:
        print(i)
        break

Ответ: 127

Ошибка.
Попробуйте повторить позже

Задача 5#28004

Укажите наибольшее из таких чисел x  , при вводе которых алгоритм печатает сначала 4  , а потом 13  .

|----------------------|-----------------|----------------------------|
|P-ascal---------------|Python-----------|C-+-+-----------------------|
|var x, a, b : longint; |x = int(input())  |#include < iostream >        |
|begin                 |a = 0            |using namespace std;         |
|                      |                 |                            |
|readln(x);            |b = 1            |int main()                   |
|a := 0; b := 1;       |while x > 0 :    |{                           |
|while x > 0 do begin  |  a = a + 2      |  int x, a, b;              |
|                      |                 |                            |
|   a := a+ 2;         |  b = b∗ (x%1000)|  cin  >>  x;                |
|   b := b∗(x mod 1000);|  x = x∕∕1000     |  a = 0;                     |
|   x := x dix 1000;   |print(a,b)         |  b = 1;                    |
|end;                  |                 |  while (x > 0)             |
|                      |                 |                            |
|writeln(a); write(b);   |                 |  {                         |
|end.                  |                 |    a = a+ 2;               |
|                      |                 |    b = b∗(x%1000);         |
|                      |                 |                            |
|                      |                 |    x = x∕1000;             |
|                      |                 |  }                         |
|                      |                 |  cout <<  a <<  endl < < b;|
|                      |                 |                            |
------------------------------------------}---------------------------|
Показать ответ и решение
for i in range(10000000):
    x = i
    a, b = 0, 1
    while x > 0:
        a += 2
        b *= (x%1000)
        x //= 1000
    if a == 4 and b == 13:
        maxim = i
print(maxim)

Ответ: 13001

Ошибка.
Попробуйте повторить позже

Задача 6#36057

Ниже записана программа, которая получает натуральное число x < 90000  , выполняет преобразования, а затем выводит два числа. Укажите наибольшее возможное значение x  , при вводе которого программа выведет 3  и 4  , а также  x  будет являться числом-палиндромом.

  x = int(input())
  a, b = 0, 0
  while x > 0:
      if x % 11 == 0:
          a += 1
      else:
          b += x % 5
      x = x // 11
  print(a, b)

Показать ответ и решение

Напишем программу, которая методом перебора подберет нужное значение:

  for i in range(89999, 1, -1):
      x = i
      a, b = 0, 0
      while x > 0:
          if x % 11 == 0:
              a += 1
          else:
              b += x % 5
          x = x // 11
      if a == 3 and b == 4:
          c = 0
          x = i
          while x > 0:
              c = c*10 + (x % 10)
              x = x // 10
          if c == i:
              print(i)
              break

Ответ: 88088

Ошибка.
Попробуйте повторить позже

Задача 7#36058

Ниже записана программа, которая получает пятизначное натуральное число x  , выполняет преобразования,   затем выводит два числа. Укажите наименьшее возможное значение x  , при вводе которого программа выведет 2  и нечетное число.

  x = int(input())
  a, b = 0, 0
  while x > 0:
      if x % 16 == 0:
          a += 1
      else:
          b += x % 8
      x = x // 16
  print(a, b)

Показать ответ и решение

Напишем программу, которая методом перебора подберет нужное значение:

  for i in range(10000, 100000):
      x = i
      a, b = 0, 0
      while x > 0:
          if x % 16 == 0:
              a += 1
          else:
              b += x % 8
          x = x // 16
      if a == 2 and b % 2 != 0:
          print(i)
          break

Ответ: 10496

Ошибка.
Попробуйте повторить позже

Задача 8#36059

Ниже записана программа, которая получает натуральное число x  , выполняет преобразования, а затем выводит два числа. Укажите значение x  , при вводе которого программа выведет 8096  и 26  .

  x = int(input())
  a, b = 0, 0
  while x > 0:
      if x % 16 == 0:
          a += x
      else:
          b += a % 8 + x % 16
      x = x // 16
  print(a, b)

Показать ответ и решение

Напишем программу, которая методом перебора подберет нужное значение:

  for i in range(1, 100000):
      x = i
      a, b = 0, 0
      while x > 0:
          if x % 16 == 0:
              a += x
          else:
              b += a % 8 + x % 16
          x = x // 16
      if a == 8096 and b == 26:
          print(i)

Ответ: 8096

Ошибка.
Попробуйте повторить позже

Задача 9#37824

Найдите наименьшее натуральное число a  , для которого существует такое неотрицательное значение n  , чтобы magic(a, n) > 37  . Для найденного значения a  найдите наименьшее значение n  такое, что magic(a, n) > 230 − 1007  . В ответ запишите найденное значение n  .

def magic(a, n):
    q = 1
    t = 1
    while(q < 100000):
        if(t <= q):
            q, t = t, q
        q += 1
        t += 1
    r = q
    while(n != 0):
        if(n % 2 == 1):
            r *= a
        n //= 2
        a *= a
    return r // q

Показать ответ и решение

Заметим, что функции magic(a, n) это бинарное возведение числа a  в степень n  . Поэтому наименьшее натуральное число, для которого существует такое неотрицательное число n  , что magic(a, n) > 37  — это число 2  . А тогда минимальное значение n  , такое что magic(2, n) > 230 − 1007  — это 30  .

Ответ: 30
Рулетка
Вы можете получить скидку в рулетке!