#include #include #include using namespace std; int N, A0, g_seed; unsigned int fr() { g_seed = 214013 * g_seed + 2531011; return (g_seed >> 16) & 0x7FFF; } int next(int prev) { return 1 + prev + (fr() & 0b111); } int calcB(int A) { return A - (A % 3) * (A % 5); } int main() { ifstream fin("justsort.in"); fin >> N >> A0 >> g_seed; int SB[8]; unsigned long long total = 0, p139 = 1; for (int i = 0, Ai = A0; i < N; i++, Ai = next(Ai)) { int Bi = calcB(Ai); if (i < 8) { SB[i] = Bi; } else if(i < N) { sort(SB, SB + 8); total += p139 * SB[0]; p139 *= 139; SB[0] = Bi; } } int N8 = N >= 8 ? 8 : N; sort(SB, SB + N8); for (int j = 0; j < N8; j++) { total += p139 * SB[j]; p139 *= 139; } ofstream fout("justsort.out"); fout << total; return 0; }