#define int long long signedmain(){ int n; char ch; cin >> n >> ch; string s; cin >> s; int count = 0; for (int i = 0; i < n; i++) { if (s[i] == ch) { count += min(i + 1, n - i);//到左边和右边的较小值 } } cout << count << endl; }
longlongmodinv(longlong a, longlong m){ longlong m0 = m, t, q; longlong x0 = 0, x1 = 1;
if (m == 1) { return0; } // Apply extended Euclid Algorithm while (a > 1) { q = a / m; t = m; m = a % m, a = t; t = x0; x0 = x1 - q * x0; x1 = t; } if (x1 < 0) { x1 += m0; } return x1; } voidsolve(){ int x, y; cin >> x >> y;
int n = x + y; longlong mod = 1e9 + 7; vector<longlong> fac(n + 1); fac[0] = 1; for (int i = 1; i <= n; i++) { fac[i] = fac[i - 1] * i % mod; } vector<longlong> inv(n + 1); inv[n] = modinv(fac[n], mod); for (int i = n - 1; i >= 0; i--) { inv[i] = inv[i + 1] * (i + 1) % mod; }
vector<longlong> res; for (int i = 1; i <= n; i++) { longlong tmp = 0; if (i % 2 == 1) { int a = i / 2 + 1; int b = i / 2;
if (a <= x && a >= 1 && b <= y && b >= 1) { longlong r1 = fac[x - 1] * inv[a - 1] % mod * inv[x - a] % mod; longlong r2 = fac[y - 1] * inv[b - 1] % mod * inv[y - b] % mod; tmp += r1 * r2 % mod; tmp %= mod; } if (a <= y && a >= 1 && b <= x && b >= 1) { longlong r1 = fac[y - 1] * inv[a - 1] % mod * inv[y - a] % mod; longlong r2 = fac[x - 1] * inv[b - 1] % mod * inv[x - b] % mod; tmp += r1 * r2 % mod; tmp %= mod; } res.push_back(tmp); } else { int a = i / 2; if (a <= x && a >= 1 && a <= y) { longlong r1 = fac[x - 1] * inv[a - 1] % mod * inv[x - a] % mod; longlong r2 = fac[y - 1] * inv[a - 1] % mod * inv[y - a] % mod; tmp += (r1 * r2) % mod * 2ll % mod; } res.push_back(tmp); } }
voidsolve(){ ios::sync_with_stdio(0); jc[0] = inv[0] = 1; for (i = 1; i <= N; i++) { jc[i] = jc[i - 1] * i % M; } inv[N] = ksm(jc[N], M - 2); for (i = N - 1; i >= 1; i--) { inv[i] = inv[i + 1] * (i + 1) % M; } cin >> n >> m; for (i = 1; i <= n + m; i++) { j = i / 2; k = i - j; cout << (fuck(j, n, k, m) + fuck(k, n, j, m)) % M << endl; } }