Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using namespace std;
- int main() {
- int n;
- int x;
- int y;
- int a0;
- int m;
- long long z;
- long long t;
- long long b0;
- cin >> n;
- cin >> x;
- cin >> y;
- cin >> a0;
- cin >> m;
- cin >> z;
- cin >> t;
- cin >> b0;
- long long sums[n + 1];
- sums[0] = 0;
- sums[1] = a0;
- int delimetr = (1 << 16);
- for (int i = 2; i < n + 1; i++) {
- //a0 = (x * a0 + y) % delimetr;
- a0 = (x * a0 + y) % delimetr;
- sums[i] = sums[i - 1] + a0;
- }
- long long delimetr2 = (1 << 30);
- long long b1 = ((z * b0 + t + delimetr2) % delimetr2);
- int l, r;
- long long result = 0;
- for (int i = 0; i < m; i++) {
- if (b0 % n > b1 % n) {
- l = (int) (b1 % n);
- r = (int) (b0 % n);
- } else {
- r = (int) (b1 % n);
- l = (int) (b0 % n);
- }
- result += sums[r + 1] - sums[l];
- b0 = ((z * b1 + t + delimetr2) % delimetr2);
- b1 = ((z * b0 + t + delimetr2) % delimetr2);
- }
- cout << result;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement