Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
68065 | Alphys | 小 G 的字符串 | C++ | 解答错误 | 30 | 13 MS | 1136 KB | 672 | 2023-01-23 13:45:46 |
#include<bits/stdc++.h> #define ll long long using namespace std; const ll MOD = 1e9+7; const int MAXN = 1e5+10; int n; ll mui[MAXN],ans; char s[MAXN]; ll Qpow(ll a,ll x){ ll r=1; for(;x;a=a*a%MOD,x>>=1)if(x&1)r=r*a%MOD; return r%MOD; } ll inv(int x){ return Qpow(x,MOD-2); } ll C(int n,int m){ return mui[n]*inv(mui[n-m]*mui[m])%MOD; } int main(){ //freopen("str.in","r",stdin); //freopen("str.out","w",stdout); scanf("%d%s", &n, s); mui[0]=1; for(int i=1;i<=n;i++)mui[i]=mui[i-1]*i%MOD; for(int i=0;i<n;i++) ans=(ans+C(n-1,i)*(s[i]-'0'))%MOD; ans=(ans*inv(Qpow(2,n-1)))%MOD; printf("%lld", (1%MOD+MOD-ans)%MOD); return 0; }