Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <cstring>
- const int LEN = 1e5;
- const int MOD = 1e9 + 7;
- char s[LEN + 1];
- long long mpow2[LEN + 1];
- long long cnt[2];
- int main()
- {
- long long temp = 1;
- for(int i = 0; i <= LEN; ++i)
- {
- mpow2[i] = temp;
- temp = (temp * 2) % MOD;
- }
- scanf("%s", s);
- int n = strlen(s);
- long long ans = 0;
- for(int i = 0; i < n; ++i)
- {
- int x = s[i] - '0';
- long long left = cnt[x ^ 1];
- long long right = mpow2[n - i - 1];
- ans = (ans + (left * right) % MOD) % MOD;
- cnt[x] = (cnt[x] + mpow2[i]) % MOD;
- }
- printf("%lld\n", ans);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement