В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
жан108
жан108
26.02.2020 06:37 •  Информатика

информатика Принцип домино. Имеется ряд, состоящий из вертикально стоящих костяшек домино разного раз- мера. Для каждой из костяшек известна ее высота hi и расстояние до следующей костяшки li. Тол- щина костяшки считается пренебрежимо малой. Первую костяшку толкают, и она падает в сторону второй костяшки. Падение происходит без про- скальзывания, то есть нижний край костяшки остается на том же месте. Если костяшка при падении задевает другую костяшку (или хотя бы касается ее), это приводит к тому, что дальше будут падать обе эти костяшки. Необходимо выяснить, сколько всего костяшек упадет. Входные данные. В первой строке задается натуральное число N (1 < N < 2 ■ 105), определяющее общее количество костяшек. Во второй строке задается N чисел, определяющих высоты соответству- ющих костяшек. В третьей строке задается N — 1 число, i-ое из этих чисел определяет расстояние между i-й и (i + 1)-й костяшкой. Все числа натуральные и не превосходят 109. Выходные данные. Выведите одно число - количество костяшек, которые упадут после толчка первой костяшки. Примеры входных и выходных данных вво д вывод 4 4 1 2 3 4 1 2 1 3 2 5 6 7 4 8

Показать ответ
Ответ:
lolkajoin
lolkajoin
05.02.2023 05:14

--- Python 3.8.3 ---

import typing  

from typing import Iterable

from typing import List

from typing import Any  

from typing import AnyStr

from typing import Callable

from typing import NoReturn

def _Ok(func: Callable[[Any], Any]):

   def OkWrapper(*a, **kw):

       r = func(*a, **kw)

       if(r):

           print('ok')

       else:

           print('Error')

   return OkWrapper

class Queue:

   buffer = []

   _t = None

   _iterPos = 0

   def __init__(self, t, InitSeq : Iterable[Any] = None):

       if (InitSeq != None):

           self.buffer.extend(InitSeq)

       self._t = t

   def __getitem__(self, position):

       return self.buffer[position]

   

   def __len__(self):

       return len(self.buffer)

   @property

   def T(self):

       return self._t

   @_Ok

   def push(self, item):

       assert isinstance(type(item), type(self._t))

       self.buffer.append(item)

       self._length = len(self.buffer)

       return True

   @_Ok

   def clear(self):

       self.buffer.clear()

       return True

   def front(self):

       return self._peek(0)    

   

   @_Ok

   def pop(self):

       if (len(self.buffer) > 0):

           self.buffer.pop(0); return True

       return False

   def _peek(self, itempos):

       if (len(self.buffer) > 0):

           return self.buffer[itempos]

       print('Error: Empty Queue'); return

   

def CommandHandler(q: Queue, cmds: List[AnyStr]) -> NoReturn:

   IsRunning = True

   while IsRunning:

       NewCmd = input()

       Tokens = NewCmd.split(' ')

       if (Tokens[0] == 'push'):

           try:

               q.push(q.T(Tokens[1]))

           except IndexError:

               print('Invalid Command')

           except AssertionError:

               print('Invalid pushed type')

       if (Tokens[0] == 'pop'):

           q.pop()

       if (Tokens[0] == 'front'):

           print(q.front())

       if (Tokens[0] == 'size'):

           print( len(q) )

       if (Tokens[0] == 'clear'):

           q.clear()

       if (Tokens[0] == 'exit'):

           print('bye')

           IsRunning = False  

       

       

def main():

   q = Queue(int)

   avCommands = ['push','pop','front','size','clear', 'exit']

   CommandHandler(q, avCommands)

if __name__ == "__main__":

   main()

Пояснения:

Экземпляр Queue может инициализироваться как пустой очередью, так и уже заполненной. Что бы инициализировать пустую очередь, не передавайте в конструктор InitSeq:

q = Queue(int)

Что бы инициализировать очередь с некоторыми значениями, передайте в конструктор InitSeq:

q = Queue(int, [1,2,4,5,6])

Класс Queue строго типизирован, и каждый новый элемент будет проверяться на соответствие хранимому типу, с которым был инициализирован текущий экземпляр.

В моей реализации класс Queue не поддерживает изменение хранимого типа с приведением всех хранимых значений к новому типу

В моей реализации класс Queue не поддерживает изменение хранимого типа без приведения хранимых значений

В моей реализации класс Queue не поддерживает изменение хранимого типа при пустом буфере.

В моей реализации класс Queue является итерируемым объектом (Поддерживает простой перебор в цикле for), а так же поддерживает доступ к элементу по индексу из вне.

q[index] -> q.buffer[index]

0,0(0 оценок)
Ответ:
matveyelmakov
matveyelmakov
20.08.2021 14:04

1)а

var a:real;

begin

readln(a);

a1 := a*a;  /получили а^2
a := a1*a1;  /получили a^4

a := a1*a*a;  /получили a^(4+4+2)

writeln(a);

end.

 

1б)

var x:real;

i:integer;

begin

readln(a);

a1 := a*a*a;  /получили а^3
a := a1*a1*a1;  /получили a^9

a := a*a1*a1; /получили а^(9+3+3)

writeln(a);

end.

 

2)

var a:real;
begin
readln(a);
writeln('высоты равны', a*a*sqrt(3)/4*a);
writeln('Радиус вписанной окружности', a*a*a/4*a*a*sqrt(3)/4);
writeln('Радиус описанной окружности', a*a*sqrt(3)/4*2/3*a);
end.

 

3)var a:real;
begin
readln(a);

writeln('В килобайтах' a/1024);

writeln('В мегабайтах' a/(1024*1024));

end.

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота