Задания
Версия для печати и копирования в MS Word
Тип 6 № 55623
i

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

В на­чаль­ный мо­мент Че­ре­па­ха на­хо­дит­ся в на­ча­ле ко­ор­ди­нат и на­прав­ле­на вверх (вдоль по­ло­жи­тель­но­го на­прав­ле­ния оси ор­ди­нат).

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

Че­ре­па­ха вы­пол­ни­ла сле­ду­ю­щую про­грам­му (x в тек­сте про­грам­мы  — не­ко­то­рое на­ту­раль­ное число):

По­вто­ри 4 [Вперёд x На­пра­во 90 Вперёд x На­ле­во 90 Вперёд x На­пра­во 90].

Опре­де­ли­те, при каком наи­мень­шем на­ту­раль­ном x ко­ли­че­ство точек с це­ло­чис­лен­ны­ми ко­ор­ди­на­та­ми внут­ри об­ла­сти, огра­ни­чен­ной ли­ни­ей, по­лу­чен­ной при вы­пол­не­нии дан­ной про­грам­мы, ока­жет­ся боль­ше 1500. Точки, рас­по­ло­жен­ные на линии, не учи­ты­вать.

Спрятать решение

Ре­ше­ние.

На­ри­су­ем при по­мо­щи Python ис­ко­мую кар­тин­ку для не­ко­то­рых зна­че­ний x и по­про­бу­ем вы­ве­сти фор­му­лу для на­хож­де­ния ис­ко­мо­го ко­ли­че­ства точек:

import turtle as t

t.left(90)

t.speed(1000)

k = 10

x = 2

t.down()

for i in range(4):

t.forward(x * k)

t.right(90)

t.forward(x * k)

t.left(90)

t.forward(x * k)

t.right(90)

t.up()

for i in range(0, 3 * x + 1):

for y in range(-x, 2 * x + 1):

t.goto(i * k, y * k)

t.dot()

Для x  =  2 ис­ко­мых точек 9, а всего точек 49. Для x  =  3 ис­ко­мых точек 28, а всего 100. Можно вы­ве­сти фор­му­лу. Ко­ли­че­ство ис­ко­мых точек будет равно раз­но­сти ко­ли­че­ства всех точек и точек на линии, то есть:

 левая круг­лая скоб­ка 3x плюс 1 пра­вая круг­лая скоб­ка в квад­ра­те минус 4 умно­жить на левая круг­лая скоб­ка x плюс 1 пра­вая круг­лая скоб­ка в квад­ра­те минус 4 левая круг­лая скоб­ка x минус 1 пра­вая круг­лая скоб­ка .

При по­мо­щи python най­дем ми­ни­маль­ное зна­че­ние, при ко­то­ром вы­ве­ден­ная фор­му­ла даёт число, пре­вос­хо­дя­щее 1000:

for x in range(1, 100):

if (3 * x + 1) ** 2 - ((x + 1) ** 2) * 4 - 4 * (x - 1) >= 1500:

print(x)

break

Про­грам­ма долж­на вы­ве­сти число 18.

 

Ответ: 18.


Аналоги к заданию № 55593: 55623 Все