acwing_3195_有趣的数
//
// Created by HUAWEI on 2024/11/17.
//
#include<iostream>
#include<cstring>
#include<algorithm>
#define int long long
using namespace std;
const int N = 1000 + 50;
const int MOD = 1e9 + 7;
int C[N][N]; //组合数
signed main() {
int n;
cin >> n;
for (int i = 0; i <= n; i++) {
for (int j = 0; j <= i; j++) {
if (!j)C[i][j] = 1;
else {
C[i][j] = (C[i - 1][j] + C[i - 1][j - 1]) % MOD;
}
}
}
int res = 0;
for (int k = 2; k <= n - 2; k++) {
res = (res + C[n - 1][k] * (k - 1) * (n - k - 1)) % MOD;
}
cout << res;
return 0;
}
注意事项:
-
组合数的计算方法
-
在何时取MOD
-
本题的关键在于将一个数的所有位数分为两类:0,1和2,3;然后设第一类的尾数为k,枚举k进行计算。