Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
67864 _ 小 G 的字符串 C++ 解答错误 20 7 MS 1516 KB 826 2023-01-20 14:43:21

Tests(2/10):


#include <bits/stdc++.h> using namespace std; const int MXN = 100005; const int DVS = 1e9 + 7; const int INV2 = 5e8 + 4; int N, bs, sm, inv[MXN], fac[MXN], facinv[MXN]; bool str[MXN]; int main() { cin >> N; for (int i(0); i != N; ++i) { char c(0); cin >> c; if (c == '0') str[i] = true; } inv[1] = fac[0] = fac[1] = facinv[0] = facinv[1] = 1; for (int i(2); i < N; ++i) { inv[i] = inv[DVS % i] * 1LL * (DVS - DVS / i) % DVS; fac[i] = fac[i - 1] * 1LL * i % DVS; facinv[i] = facinv[i - 1] * 1LL * inv[i] % DVS; } for (int i(0); i != N; ++i) { if (str[i]) sm += fac[N - 1] * 1LL * facinv[i] % DVS * facinv[N - 1 - i] % DVS; } bs = 1; for (int i(1); i != N; ++i) bs = bs * 1LL * INV2 % DVS; cout << sm * 1LL * bs % DVS << endl; return 0; }


测评信息: