Филиппович_Николаевич
?>

Желательно на python олимпиадное задание по информатике 2019 годаЧисло e = 2, 718281828459...находит применение во многих разделах математики, впервую очередь алгебре и математическом анализе. Очень часто это число называют числом Эйлера в честь великого математика XVIII в Леонарда Эйлера (1707-1783Леонард Эйлер впервые использовал букву e для обозначения этого числа в книге «Механика», изданной в 1736 г., хотя в рукописях и письмах такое обозначение было использовано начиная с 1728 г.В своих книгах, статьях и рукописях Эйлер рассмотрел множество вычисления числа e. Очень интересен связанный с представлением числа Эйлера в виде бесконечнойнепрерывной дробиУвеличивая число шагов, можно получить приближенное выражение числа Эйлера с высокой точностью в виде дроби. Необходимо написать программу для поиска числителя изнаменателя такой дроби при условии, что выбирается первый знаменатель, строго больший заданного числа n.Формат входных данных:В единственной строке входных данных записано целое число n (2 ≤ n ≤10 (в 9й степени))Формат выходных данных:Выведите два натуральных числа, разделенных пробелами – числитель и знаменатель дроби, приближенно выражающей число Эйлера, при этом знаменатель должен быть минимальным, но больше n.Пример входных данных: 15Пример выходных данных: 144 53

Информатика

Ответы

ashybasaida-33

Значение дроби можно вычислять так: начинаем с e = 0, затем обновляем значение e по формуле n / (n + e), уменьшая n, пока не получим 2 / (2 + ...). В конце прибавим к результату 2. Пример:

0\to \dfrac4{4+0}\to \dfrac3{3+\dfrac4{4+0}}\to\dfrac2{2+\dfrac3{3+\dfrac4{4+0}}}\to2+\dfrac2{2+\dfrac3{3+\dfrac4{4+0}}}

Все скучные операции с дробями оставим питону, пусть считает сам - у него для этого есть модуль fractions.

Знаменатели растут очень быстро - уже начиная с числа 13 знаменатель будет больше миллиарда.

Код (Python 3):

from fractions import Fraction

from itertools import count

n = int(input())

for k in count(3):

   e = Fraction(0)

   while k >= 2:

       e = k / (k + e)

       k -= 1

   e += 2

   a, b = e.numerator, e.denominator

   if b > n:

       print(a, b)

       break

Пример ввода:

1000000000

Пример вывода:

6706022400 2467007773

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Желательно на python олимпиадное задание по информатике 2019 годаЧисло e = 2, 718281828459...находит применение во многих разделах математики, впервую очередь алгебре и математическом анализе. Очень часто это число называют числом Эйлера в честь великого математика XVIII в Леонарда Эйлера (1707-1783Леонард Эйлер впервые использовал букву e для обозначения этого числа в книге «Механика», изданной в 1736 г., хотя в рукописях и письмах такое обозначение было использовано начиная с 1728 г.В своих книгах, статьях и рукописях Эйлер рассмотрел множество вычисления числа e. Очень интересен связанный с представлением числа Эйлера в виде бесконечнойнепрерывной дробиУвеличивая число шагов, можно получить приближенное выражение числа Эйлера с высокой точностью в виде дроби. Необходимо написать программу для поиска числителя изнаменателя такой дроби при условии, что выбирается первый знаменатель, строго больший заданного числа n.Формат входных данных:В единственной строке входных данных записано целое число n (2 ≤ n ≤10 (в 9й степени))Формат выходных данных:Выведите два натуральных числа, разделенных пробелами – числитель и знаменатель дроби, приближенно выражающей число Эйлера, при этом знаменатель должен быть минимальным, но больше n.Пример входных данных: 15Пример выходных данных: 144 53
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

mlf26
bulenbeiser
Татьяна1856
turovvlad
tenvalerij
Палкина-Дроздова
seleznev1980
vladburakoff5
Peshkov
andreanikin
Семеновна-Павел
kriapex
Голосова-Лобанов1555
борисовна Елена78
Irina_Nikolai