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

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

Задача 1#56307

Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует две команды: Вперёд n  (где n  — целое число), вызывающая передвижение Черепахи на n  единиц в том направлении, куда указывает её голова, и Направо m  (где m  — целое число), вызывающая изменение направления движения на m  градусов по часовой стрелке.

Запись Повтори k  [Команда1  Команда2  …КомандаS  ] означает, что последовательность из S  команд повторится k  раз.

Черепахе был дан для исполнения следующий алгоритм:

Повтори 10  [Повтори 10  [Вперёд 3  Налево 90  ] Направо 90  Вперёд 5  ].

Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии учитывать не следует.

Показать ответ и решение
from turtle import *
screensize(1000,1000)
tracer(0)
update()
r = 25
left(90)
for x in range(10):
    for y in range(10):
        forward(3*r)
        left(90)
    right(90)
    forward(5*r)
up()
for x in range(-20,20):
    for y in range(-20,20):
        goto(x*r,y*r)
        dot(3,’red’)
done()

В результате получаем такую фигуру:

PIC

Тогда количество точек будет равно 80  .

 

Ответ: 80

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

Задача 2#33502

Определите, при каком наименьшем введённом значении переменной s  программа выведет число 16  ? Для Вашего удобства программа приведена на нескольких языках программирования.

|----------------------|------------------|----------------------|
|Pascal----------------|Python------------|C +-+-----------------|
|var s, n : integer;    |s = int(input())    |#include < iostream  >  |
|                      |                  |                      |
|begin                  |s = (s + 21) ∕∕ 10|using namespace std;    |
|  readln(s);           |n = 1             |int main(){            |
|  s :=  (s + 21) div 10;|while s >= 0 :    |  int s, n;            |
|                      |                  |                      |
|  n :=  1;             |  s = s − n       |  cin > > s;           |
|  while s >= 0 do     |  n = n  ∗ 2      |  s = (s + 21) ∕ 10;  |
|  begin                |print(n)           |  n = 1;              |
|    n := n ∗ 2;       |                  |  while (s >= 0){      |
|                      |                  |                      |
|    s :=  s − n;       |                  |  s = s −  n;         |
|  end;                |                  |  n = n  ∗ 2;         |
|  writeln(n)           |                  |  }                   |
|                      |                  |                      |
|end.                   |                  |  cout < < n  <<  endl; |
|                      |                  |  return 0;            |
|                      |                  |}                     |
------------------------------------------------------------------
Показать ответ и решение
for i in range(1000):
    s = i
    s = (s + 21)//10
    n = 1
    while s >= 0:
        s = s - n
        n = n*2
    if n == 16:
        print(i)
        break

Ответ: 49

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

Задача 3#29441

Определите, что будет напечатано в результате работы следующего фрагмента программы:

|-------------------------|---------------|---------------------------|
|C-+-+--------------------|P-ython---------|P-ascal--------------------|
|#include < iostream >     |s =  0         |var k, s : integer;         |
|using namespace std;      |k =  0         |begin                      |
|                         |               |                           |
|int main(){               |while k <= 15 :|      s :=  0;              |
|     int s, k;           |     k + =  3  |      k :=  0;              |
|     s =  0; k = 0;      |     s + = k   |      while k <= 15 do begin|
|                         |               |                           |
|     while (k <= 15) {   |print(s)        |           k := k +  3;    |
|           k = k +  3;   |               |           s := s +  k;    |
|           s = s + k;    |               |      end;                 |
|     }                   |               |      write(s);             |
|                         |               |                           |
|     cout <<  s <<  endl;|               |end.                       |
|     return 0;           |               |                           |
|}                        |               |                           |
-----------------------------------------------------------------------
Показать ответ и решение

Необходимо скопировать и вставить программу.

Ответ: 63

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

Задача 4#29353

Определите, при каком наименьшем введенном числе n  после выполнения следующей программы будет напечатано число 250  ? Для вашего удобства программа приведена на трёх языках программирования.

|---------------------------------------|------------------------|--------------------------|
|P-ascal--------------------------------|P-ython-----------------|C-+-+---------------------|
|var n, s : integer;                    |n =  int(input())       |int n, s = 250;           |
|                                       |                        |                          |
|begin                                  |s =  250                |cin > >  n;               |
|      readln(n);                       |while 2 ∗ s + n < 571 : |while (2 ∗ s + n < 571 ) {|
|                                       |                        |                          |
|      s := 250;                        |     s =  s −  10       |     s  =  s − 10;        |
|      while (2 ∗ s + n < 571) do begin |     n  =  n +  25      |     n  =  n +  25;       |
|                                       |                        |                          |
|           s :=  s −  10;              |print(s)                |}                         |
|           n  :=  n  + 25;              |                        |cout < <  s;              |
|                                       |                        |                          |
|      end;                             |                        |                          |
|      writeln(s);                      |                        |                          |
|                                       |                        |                          |
-end.----------------------------------------------------------------------------------------
Показать ответ и решение
for i in range(1000):
    n = i
    s = 250
    while 2 * s + n < 571:
        s -= 10
        n += 25
    if s == 250:
        print(i)
        break

Ответ: 71

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

Задача 5#28802

Определите, при каком наименьшем введённом значении переменной s  программа выведет число 105

|----------------------|---------------|----------------------|
|P-ascal----------------|Python---------|C-+-+-----------------|
|var s, n : integer;     |s = int(input()) |#include < iostream >  |
|begin                  |n = 105        |using namespace std;  |
|                      |               |                      |
|  n :=  105;           |while n >  s :  |int main () {          |
|  read(s);             |  s = s +  5   |  int s, n = 105;     |
|  while s < n do begin |  n = n  − 2   |  cin >>  s;          |
|                      |               |                      |
|    s := s +  5;      |print(n)        |  while (n > s) {     |
|    n  :=  n − 2;      |               |    s =  s + 5;       |
|  end;                |               |    n  = n −  2;      |
|  write(n);            |               |  }                   |
|                      |               |                      |
|end.                  |               |  cout <<  n < < endl;|
|                      |               |  return 0;           |
|                      |               |}                     |
---------------------------------------------------------------
Показать ответ и решение
for i in range(1000):
    s = i
    n = 105
    while n > s:
        s += 5
        n -= 2
    if n == 105:
        print(i)
        break

Ответ: 105

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

Задача 6#27988

Определите, при каком наименьшем введённом значении переменной k  программа выведет число 1024  ?

|-----------------|----------------------|--------------------------|
|Python-----------|C-+-+-----------------|P-ascal-------------------|
|k = int(input())  |#include < iostream >  |var s, n, k : integer;     |
|n = 1            |using namespace std;  |begin                     |
|                 |                      |                          |
|s = 0            |int main ()           |   n := 1, s := 0;         |
|while n ∗s < 1234 :|{                   |   readln(k) :             |
|  n = n∗ k       |  int s, n, k;        |   while n∗ s < 1234 do begin|
|                 |                      |                          |
|  s = s + k      |  n = 1, s = 0;       |     n := n ∗k;           |
|print(n)          |  cin > > k;          |     s := s+ k;           |
|                 |  while (n ∗s < 1234)  |   end;                    |
|                 |  {                   |   writeln(n);             |
|                 |                      |                          |
|                 |     n = n ∗k;        |end.                      |
|                 |     s = s+ k;        |                          |
|                 |  }                   |                          |
|                 |                      |                          |
|                 |  cout < < n < < endl;|                          |
|                 |  return 0;           |                          |
|                 |}                     |                          |
---------------------------------------------------------------------
Показать ответ и решение
for i in range(1, 10000):
    k = i
    n = 1
    s = 0
    while n*s < 1234:
        n = n*k
        s = s+k
    if n == 1024:
        print(i)
        break

Ответ: 32

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

Задача 7#27449

Определите, при каком наименьшем введённом значении переменной k  программа выведет число − 300  ?

|----------------|-----------------------|--------------------------|
|P-ython---------|-C +-+-----------------|Pascal--------------------|
|k  = int(input()) | #include < iostream  >  |var s, n, k : integer;     |
|n  = − 100      | using namespace std;    |begin                      |
|                |                       |                          |
|s =  − 10       |                       |  n := − 10, s := − 10;     |
|while n+ s < 10 : int main()             |  readln(k);               |
|   n = n + k    | {                     |  while (s+ n) < 10 do begin
|                |                       |                          |
|   k = k + 1    |   int s, n, k;         |    n := n + k;            |
|   s = s∗ k     |   n = − 100, s = − 10;|    k := k + 1;             |
|print(n)        |   cin > > k;           |    s := s∗ k;            |
|                |   while (s+ n < 10)     |  end;                    |
|                |                       |                          |
|                |   {                   |  writeln(n);              |
|                |     n =  n+ k;        |end.                      |
|                |     k =  k+ 1;        |                          |
|                |                       |                          |
|                |     s = s ∗k;         |                          |
|                |   }                   |                          |
|                |   cout < < n  <<  endl; |                          |
|                |                       |                          |
|                |   return 0;            |                          |
-------------------}------------------------------------------------|
Показать ответ и решение
for i in range(-1000, 1000):
    k = i
    n = -100
    s = -10
    while n + s < 10:
        n += k
        k += 1
        s *= k
    if n == -300:
        print(i)
        break

Ответ: -200

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

Задача 8#26673

Определите, при каком наименьшем введённом значении переменной k  программа выведет число 50  ?

|-----------------|----------------------|--------------------------|
|P-ython-----------|C-+-+-----------------|P-ascal-------------------|
|k =  int(input())  |#include < iostream >  |var s, n, k : integer;     |
|n =  10          |using namespace std;  |begin                     |
|                 |                      |                          |
|s =  1           |int main ()           |   n := 10;               |
|while s + n < 100 :|{                   |   s := 1;                |
|  n  = n ∗k      |  int s, n, k;        |   readln(k);              |
|                 |                      |                          |
|  s =  s∗ n      |  n = 10;             |   while s+ n < 100 do begin|
|print(n)          |  s = 1;              |     n := n ∗k;           |
|                 |  cin > > k;          |     s := s∗n;            |
|                 |  while (s + n < 100){ |   end;                    |
|                 |                      |                          |
|                 |     n = n ∗k;        |   writeln(n);             |
|                 |     s = s∗ n;        |end.                      |
|                 |  }                   |                          |
|                 |                      |                          |
|                 |  cout < < n < < endl;|                          |
|                 |  return 0;           |                          |
|                 |}                     |                          |
--------------------------------------------------------------------
Показать ответ и решение
for t in range(2, 20):
    k = t
    n, s = 10, 1
    while s + n < 100:
        n *= k
        s *= n
    if n == 50:
        print(t)
        break

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