本来是想用逆元做的,可是挂了。

WA code:

#include <bit/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;

long long mod_pow(long long base, long long exp) {
    long long result = 1;
    while (exp > 0) {
        if (exp % 2 == 1) {
            result = (result * base) % MOD;
        }
        base = (base * base) % MOD;
        exp /= 2;
    }
    return result;
}

int main() {
    long long n;
    cin >> n;
    long long a = n % MOD;
    long long b = (n + 1) % MOD;
    long long c = (n + 2) % MOD;
    long long d = (3 * n + 1) % MOD;
    long long num = a * b % MOD;
    num = num * c % MOD;
    num = num * d % MOD;
    long long inv_24 = mod_pow(24, MOD - 2);
    long long result = num * inv_24 % MOD;
    cout << result << endl;
    return 0;
}

后来借鉴了 大佬的公式,直接秒了。

AC code:

#include <bits/stdc++.h>
const int MOD = 1e9 + 7;
using namespace std;

int main() {
	long long n;
    cin >> n;
    cout << n * (n + 1) % MOD * (n + 2) % MOD * (n + 1) % MOD * (MOD + 1) / 4 % MOD << endl;
	return 0;
}