1 solutions

  • 0
    @ 2025-11-5 15:25:50

    C++ :

    #include <cstdlib>
    #include <cstdio>
    #include <iostream>
    #include <cstring>
    using namespace std;
    const int MOD = int(1e9)+7;
    int dp[1005][1005];
    int N;
    void solve() {
        dp[0][0] = 1;
        for (int i = 1; i <= 1000; ++i)
            {
              for (int j = 0; j <= 1000; ++j)
              {
                if (j + 1 <= 1000)
                {
                    dp[i][j] = dp[i-1][j+1];
                    dp[i][j] %= MOD;
                }
                if (j - 2 >= 0)
                {
                    dp[i][j] += dp[i-1][j-2];
                    dp[i][j] %= MOD;
                    if (j == 2)
                    {
                        dp[i][j] += dp[i-1][j-2];
                        dp[i][j] %= MOD;
                    }
                }
             }
        }
    }
    int main() {
        solve();
        while (scanf("%d", &N), N!=-1)
            {
            printf("%d\n", dp[N][0]);
            }
        return 0;
    }
    
    
    • 1

    Information

    ID
    16779
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By