CF319A Malek Dance Club 题解

· · 题解

题面翻译/思路

有一个长度为 n 的二进制串 x,要求将 02^n-1 的所有整数异或 x ,求异或后产生的序列中逆序对的个数,答案对 \boldsymbol{{10}^9+7} 取模

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define MOD 1000000007
char s[111];
int main() {
    ll ans=0,i=0,n=1;
    scanf("%s",s);
    for(; s[i]; ++i) {
        if(s[i]=='1')
            ans=(ans*4+n)%MOD;
        else
            ans=(ans*4)%MOD;
        n=(n*2)%MOD;
    }
    printf("%I64d",ans);
    return 0;
}