使用回忆以p/q形式为p/q形式的cos(nx)

cos(nx) in p/q form using Memoization

本文关键字:cos nx 回忆      更新时间:2023-10-16

我想使用递归和回忆来计算cos(nx(= p/q,所以我尝试了chebyshev方法用于递归方法,它适用于n的小输入诸如10^18等之类的输入等。我应该如何处理以p/q形式计算cos(nx(?对于较大的n值,我会遇到内存问题,该如何解决?cos(x(= a/b已知

#include <bits/stdc++.h>
using namespace std;
map<long, long> numerator;
map<long, long> denominator;
#define MODULO 1000000007
long a, b, n;
int main() {
    cin >> a >> b;
    cin >> n;
    numerator[0] = 1;
    numerator[1] = a;
    denominator[0] = 1;
    denominator[1] = b;
    for (long i = 2; i <= n; ++i) {
        numerator[i] = (long) (2 * a * numerator[i - 1] - b*numerator[i - 2]) % MODULO;
        denominator[i] = (denominator[i - 1] * denominator[i - 2]) % MODULO;
    }
    cout << "numerator of cos(nx) = " << numerator[n] << " denominator = " << denominator[n] << endl;
}

大声笑,这是您要的竞赛问题。你太无耻了。那是Codechef的2月挑战的问题。您可以以一些评分而下跌。SMH