f | from decimal import * | f | from decimal import * |
| | | |
n | def calculate_pi(): | n | def pi(): |
| three = Decimal(3) | | three = Decimal(3) |
n | previous_sum, term, total_sum, numerator, numerator_addend, denomina | n | lasts, t, s, n, na, d, da = (0, three, 3, 1, 0, 0, 24) |
| tor, denominator_addend = (0, three, 3, 1, 0, 0, 24) | | |
| while total_sum != previous_sum: | | while s != lasts: |
| previous_sum = total_sum | | lasts = s |
| numerator, numerator_addend = (numerator + numerator_addend, num | | n, na = (n + na, na + 8) |
| erator_addend + 8) | | |
| denominator, denominator_addend = (denominator + denominator_add | | d, da = (d + da, da + 32) |
| end, denominator_addend + 32) | | |
| term = term * numerator / denominator | | t = t * n / d |
| total_sum += term | | s += t |
| return total_sum | | return s |
| | | |
n | def calculate_cosine(x): | n | def cos(x): |
| index, previous_sum, total_sum, factorial, numerator, sign = (0, 0, | | i, lasts, s, fact, num, sign = (0, 0, 1, 1, 1, 1) |
| 1, 1, 1, 1) | | |
| while total_sum != previous_sum: | | while s != lasts: |
| previous_sum = total_sum | | lasts = s |
| index += 2 | | i += 2 |
| factorial *= index * (index - 1) | | fact *= i * (i - 1) |
| numerator *= x * x | | num *= x * x |
| sign *= -1 | | sign *= -1 |
n | total_sum += numerator / factorial * sign | n | s += num / fact * sign |
| return total_sum | | return s |
| | | |
n | def calculate_sine(x): | n | def sin(x): |
| index, previous_sum, total_sum, factorial, numerator, sign = (1, 0, | | i, lasts, s, fact, num, sign = (1, 0, x, 1, x, 1) |
| x, 1, x, 1) | | |
| while total_sum != previous_sum: | | while s != lasts: |
| previous_sum = total_sum | | lasts = s |
| index += 2 | | i += 2 |
| factorial *= index * (index - 1) | | fact *= i * (i - 1) |
| numerator *= x * x | | num *= x * x |
| sign *= -1 | | sign *= -1 |
t | total_sum += numerator / factorial * sign | t | s += num / fact * sign |
| return total_sum | | return s |
| angle_in_radians = Decimal(input()) | | A, E = (Decimal(input()), int(input())) |
| precision = int(input()) | | |
| getcontext().prec = precision + 5 | | getcontext().prec = E + 5 |
| result = angle_in_radians * calculate_pi() / Decimal(200) | | r = A * pi() / Decimal(200) |
| tangent = calculate_sine(result) / calculate_cosine(result) | | r = sin(r) / cos(r) |
| getcontext().prec = precision | | getcontext().prec = E |
| print(+tangent) | | print(+r) |