Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define ll long long
- int main()
- {
- ll int MOD = 998244353;
- ll int n;
- cin>>n;
- vector<ll int> a(n);
- for(auto &e: a) cin>>e;
- ll int ans = 0;
- for(int bit=0; bit<30; bit++)
- {
- ll int cntOdd = 0;
- ll int cntEven = 0;
- ll int totOdd = 0;
- ll int totEven = 0;
- for(int i=0; i<n; i++)
- {
- if(((1ll<<bit)&a[i]) > 0)
- {
- swap(cntEven, cntOdd);
- swap(totEven, totOdd);
- cntOdd++;
- totOdd += i;
- }
- else
- cntEven++, totEven+=i;
- (ans += (1ll<<bit)*1ll*((((i+1)*1ll*cntOdd - totOdd)%MOD))) %= MOD;
- }
- }
- cout<<ans<<"\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment