Advertisement
Guest User

Untitled

a guest
Jun 2nd, 2024
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.64 KB | None | 0 0
  1. #include <cstdio>
  2. #include <cstring>
  3.  
  4. const int LEN = 1e5;
  5. const int MOD = 1e9 + 7;
  6.  
  7. char s[LEN + 1];
  8. long long mpow2[LEN + 1];
  9. long long cnt[2];
  10.  
  11. int main()
  12. {
  13.     long long temp = 1;
  14.     for(int i = 0; i <= LEN; ++i)
  15.     {
  16.         mpow2[i] = temp;
  17.         temp = (temp * 2) % MOD;
  18.     }
  19.     scanf("%s", s);
  20.     int n = strlen(s);
  21.     long long ans = 0;
  22.     for(int i = 0; i < n; ++i)
  23.     {
  24.         int x = s[i] - '0';
  25.         long long left = cnt[x ^ 1];
  26.         long long right = mpow2[n - i - 1];
  27.         ans = (ans + (left * right) % MOD) % MOD;
  28.         cnt[x] = (cnt[x] + mpow2[i]) % MOD;
  29.     }
  30.     printf("%lld\n", ans);
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement