2 条题解

  • 0
    @ 2025-11-30 12:15:35

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

    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;
    }
    
    • 0
      @ 2025-9-4 21:59:42

      由于三元组 (a,b,c)(a,b,c) 和 (n+1−c,n+1−b,n+1−a)(n+1-c,n+1-b,n+1-a) 一一对应,故所有数字的平均值是:

      n+12\dfrac{n+1}{2}

      而总的三元组数量是:

      (n+23)\dbinom{n+2}{3}

      故答案为:

      $$\dbinom{n+2}{3} \times 3 \times \dfrac{n+1}{2}=\dfrac{(n+1)^2(n+2)n}{4}$$
      #include <bits/stdc++.h>
      const int P = 1e9 + 7;
      using namespace std;
      int main()
      {
      	int n;
          cin >> n;
          cout << 1ll * n * (n + 1) % P * (n + 2) % P * (n + 1) % P * (P + 1) / 4 % P << endl;
      	return 0;
      }
      
      • 1

      信息

      ID
      53
      时间
      100ms
      内存
      8MiB
      难度
      2
      标签
      递交数
      8
      已通过
      3
      上传者