#pragma GCC optimize("O3") #pragma GCC target("avx,avx2,fma") #include #define endl '\n' using namespace std; constexpr uint64_t MOD = (1LL<<32); inline uint64_t fastPower(int64_t base, int64_t power) { uint64_t ans = 1; if (base == 0) return 0; while (power) { if (power&1 == 1) ans = (ans*base)%MOD; power >>= 1; base = (base*base)%MOD; } return ans; } uint64_t precomputePowers[10][10]; //i, j -> a^(j*10^i) int main() { #ifndef __LOCAL__ freopen("power.in", "r", stdin); freopen("power.out", "w", stdout); #endif // __LOCAL__ uint64_t a, b, c, d, n , ans = 0, v, br[10], i, j, currNum = 1; scanf("%u%u%u%u%u", &a, &b, &c, &d, &n); for (i = 0; i < 10; i++) { precomputePowers[i][0] = 1; for (j = 1; j <= 9; j++) { precomputePowers[i][j] = fastPower(a, currNum*j); } currNum *= 10; } for (i = 0; i < n; i++) { b = (b*c + d)%MOD; br[0] = precomputePowers[0][(b/1)%10]; br[1] = precomputePowers[1][(b/10)%10]; br[2] = precomputePowers[2][(b/100)%10]; br[3] = precomputePowers[3][(b/1000)%10]; br[4] = precomputePowers[4][(b/10000)%10]; br[5] = precomputePowers[5][(b/100000)%10]; br[6] = precomputePowers[6][(b/1000000)%10]; br[7] = precomputePowers[7][(b/10000000)%10]; br[8] = precomputePowers[8][(b/100000000)%10]; br[9] = precomputePowers[9][(b/1000000000)%10]; v = ((((((((((((((((br[0]*br[1])%MOD)*br[2])%MOD)*br[3]%MOD)*br[4])%MOD)*br[5])%MOD)*br[6])%MOD)*br[7])%MOD)*br[8])%MOD)*br[9])%MOD; ans ^= v; } printf("%u\n", ans); return 0; } /* 3 5 7 9 10000000 */