#include #define endl '\n' using namespace std; #define ULL unsigned long long int const int MAXN = 1e7 + 7; ULL mod = (1LL << 32); ULL a; unsigned int c, d, n; unsigned int b[MAXN]; //map , ULL> mp; inline unsigned int fast_pow(unsigned int a, unsigned int pw) { unsigned int ret = 1; while (pw) { if (pw & 1) { ret = ((ULL)a * ret) % mod; } a = (ULL)(a * a) % mod; pw >>= 1; } return ret; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); freopen("power.in", "r", stdin); freopen("power.out", "w", stdout); cerr << mod << endl; cin >> a >> b[0] >> c >> d >> n; for (int i = 1; i <= n; i++) { unsigned int val = ((ULL)b[i-1]*c + d) % mod; b[i] = val; } // sort(b+1, b+n+1); unsigned int pw = 0; ULL v = 1; unsigned long long ans = 0; for (int i = 1; i <= n; i++) { // v = fast_pow(a, b[i]); if (b[i] > pw) { v = (v * fast_pow(a, b[i]-pw)) % mod; } else if (b[i] < pw) { v = (v * mod / fast_pow(a, pw-b[i])) % mod; } pw = b[i]; ans = ans ^ v; } cout << ans << endl; cerr << ans << endl; return 0; } /** 3 5 7 9 11 2510761843 */