Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
98630 | CSYZShenJY | ssh | C++ | 运行超时 | 30 | 1000 MS | 4164 KB | 1757 | 2023-08-16 12:09:21 |
#include <iostream> #include <cstdio> #define int long long using namespace std; const int N = 1e5 + 5; const int MOD = 1e9 + 7; int t; int sum[N], ins[N], ans, n[N], k[N]; int cnt[N]; int mod(int x) { return (x % MOD + MOD) % MOD; } int ksm(int x, int n) { if (n == 0) { return 1; } else if (n == 1) { return x; } else if (n % 2) { return mod(ksm(x, n - 1) * x); } else { int tmp = ksm(x, n / 2); return mod(tmp * tmp); } } int read() { char c = getchar(); int sum = 0, f = 1; while (c < '0' || c > '9') { if (c == '-') { f = -1; } c = getchar(); } while (c >= '0' && c <= '9') { sum = (sum << 1) + (sum << 3) + (c ^ 48); c = getchar(); } return sum * f; } signed main() { // freopen("ssh.in", "r", stdin); // freopen("ssh.out", "w", stdout); sum[1] = 1; ins[1] = 1; sum[0] = 1; ins[0] = 1; for (int i = 2; i < 1e5 + 5; ++ i) { sum[i] = mod(sum[i - 1] * i); ins[i] = ksm(sum[i], MOD - 2); } t = read(); int flag = 1; for (int i = 1; i <= t; ++ i) { n[i] = read(), k[i] = read(); if (n[i] != n[i - 1] && i != 1) { flag = 0; } } if (flag == 1) { for (int i = 1; i <= 1e5; ++ i) { cnt[i] = mod(cnt[i - 1] + mod(mod(sum[n[1]] * ins[i]) * ins[n[1] - i])); } for (int i = 1; i <= t; ++ i) { cout << mod(cnt[k[i]] + 1) << '\n'; } } else { for (int i = 1; i <= t; ++ i) { ans = 0; for (int j = 1; j <= k[i]; ++ j) { ans = mod(ans + mod(mod(sum[n[i]] * ins[j]) * ins[n[i] - j])); } cout << mod(ans + 1) << '\n'; } } } /* 10 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 3 10 */