站外题TLE求调
查看原帖
站外题TLE求调
1339828
Betrayer_of_love楼主2024/9/1 09:01

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
#define MOD 1000000007
using namespace std;
int dp[100005]; 
int fa[100005]; 
int mod(int b, int e) {
    int r = 1;
    while (e > 0) {
        if (e & 1) r = (r * b) % MOD;
        b = (b * b) % MOD;
        e >>= 1;
    }
    return r;
}
void pre() {
    fa[0] = fa[1] = 1;
    for (int i = 2; i < 100005; i++)
        fa[i] = mod(i, MOD - 2);
}
int com(int n) {
    if (n == 1) return 1;
    if (dp[n] != -1) return dp[n];
    int sum = 1;
    for (int i = 1; i <= n / 3; i++) {
        sum = (sum + com(i)) % MOD;
    }
    return dp[n] = sum;
}
signed main() {
    pre();
    int T;
    cin >> T;
    while (T--) {
        int n;
        cin >> n;
        for (int i = 0; i <= n; i++) dp[i] = -1;
        cout << com(n) << endl;
    }
    return 0;
}
2024/9/1 09:01
加载中...