Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std ;
- int main(){
- int x , y , a0, z , t , bigtwo , two;
- long long b , n , m , ans=0;
- cin >> n >> x >> y >> a0;
- cin >> m >> z >> t >> b;
- vector<int> a(n);
- vector<long long> s(n+1);
- s[0]=0 ; a[0]=a0 ; bigtwo=((1<<30)-1) , two=((1<<16)-1) ;
- for(int i = 1; i < n; i++){
- a[i]=(x*a[i-1]+y)&two;
- s[i]=a[i-1]+s[i-1];
- }
- for(int i = 1; i < n+1; i++){
- s[i]=a[i-1]+s[i-1];
- }
- a.clear() ;
- /*for(int i = 1; i < 2*m; i++){
- b=(z*b+t)&bigtwo ;
- c[i]=b%n ;
- }
- for(int i = 1; i < 2*m; i+=2){
- ans+=s[max(c[i] , c[i-1])+1]-s[min(c[i-1], c[i])];
- }
- c.clear() ; s.clear() ;*/
- long long l , r ;
- for(int i = 0; i < 2*m; i+=2){
- l=b%n ;
- b=(z*b+t)&bigtwo ;
- r=b%n ;
- b=(z*b+t)&bigtwo ;
- ans+=s[max(r,l)+1]-s[min(l, r)];
- }
- cout << ans ;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement