А98

Задача. Пусть [latex]a_{1}=b_{1}=1; a_{k}=3b_{k-1}+2a_{k-1}; b_{k}=2a_{k-1}+b_{k-1}[/latex], [latex]k=\overline{2, \infty }[/latex]. Дано натуральное [latex]n[/latex]. Найти [latex]\sum_{i=1}^{n}\frac{2^{k}}{(1+a_{k}^{2}+b_{k}^{2})k!}[/latex].

Тесты:

n [latex]\sum_{i=1}^{n}\frac{2^{k}}{(1+a_{k}^{2}+b_{k}^{2})k!}[/latex] Комментарий
2

0.0596538

Пройден
4

0.0597339

Пройден
20 0.059734 Пройден

Код:

Для решения данной задачи понадобилось ввести переменную [latex]n[/latex], которая показывает какое количество раз нужно повторить операцию сложения. В цикле for вычисляется сумма, по заданной формуле. Далее последовательность можно задать рекурентно: чтобы каждый раз не считать [latex]\frac{2^{k}}{k!}[/latex], мы заводим переменную u, равную изначально двум, потому что k начинается с 2, и u каждый раз мы будем домножать на [latex]\frac{2}{k}[/latex]. Далее остается лишь посчитать a и b (переменная [latex]as[/latex] запоминает переменную [latex]a[/latex] для последующего вычисления переменной [latex]b[/latex]) и поставить в формулу. Для проверки выполнения программы можно воспользоваться ссылкой.

Решение на Java:

Ссылка на решение.

Related Images:

5 thoughts on “А98

  1. Реализация не оптимальна с точки зрения переполнения.
    Лучше всего выражение 2^k / k! накапливать в отдельной переменной. Тогда довольно большие 2^k и k! будут взаимоуничтожаться, насколько это возможно.

    • Точно!
      Нужно просто домножать на 2/k. Мы рассматривали это на лекциях. Да и на матане было — переход к рекуррентному заданию последовательности.
      — И ещё правильные отступы 🙂

  2. Ой, как-то все пропустили факт того, что в Абрамове ошибка — сумма по i, а в формуле k. Поэтому условие некорректное — а значит, что решается непонятно. Вы почему-то положили, что в данной формуле k=i+1 (i — начинается с 1, k с двойки). В этом предположении все решено верно.

    В общем, т.к. некорректность условия выяснена только сейчас, то засчитаю решение. За октябрьскую работу сделанную в ноябре ставлю 8 баллов.

Добавить комментарий