Problem Toki’s function

 

 

 

 

#include <bits/stdc++.h>
#define ll long long
using namespace std;

int n, mod = 1000000007;
char s[200005];

int main()
{
    cin >> n >> s + 1;
    ll ans = 0;
    int flag = 0;
    for (int i = 1; s[i]; ++i)
    {
        if (s[i] == '1') ans = (ans  + (ll)(1 + i) * i  / 2 % mod * i  % mod) % mod, flag = i;
        else if (flag) ans = (ans + (ll)(i + i - flag + 1) * flag / 2 % mod * flag  % mod) % mod;
    }
    cout << ans << '\n';
    return 0;
}

  

 

posted @ 2020-04-05 12:16  洛绫璃  阅读(137)  评论(0编辑  收藏  举报