思路:整体来说就是构造出A、B数组,然后把B数组的元素异或起来。对于构造A数组来说,直接根据题意模拟即可;对于构建B数组来说,首先要注意d | i表示d去整除i,而不是i去整除d,这里我开始就弄错了,然后就可以用埃式筛来构建B数组了。简单来说,埃式筛就是两层for循环,外层i的步长为1,内层j的步长为i,主要是用于筛质数,这里是筛对应的倍数

代码:

import sys
input = lambda: sys.stdin.readline().strip()

import math
inf = 10 ** 18

def I():
    return input()

def II():
    return int(input())

def MII():
    return map(int, input().split())

def GMI():
    return map(lambda x: int(x) - 1, input().split())

def LI():
    return input().split()

def LII():
    return list(map(int, input().split()))

def LFI():
    return list(map(float, input().split()))

fmax = lambda x, y: x if x > y else y
fmin = lambda x, y: x if x < y else y
isqrt = lambda x: int(math.sqrt(x))

'''

'''

def solve():
    n, a1, m = LII()

    A = [0] * (n + 1)
    A[1] = a1
    for i in range(2, n + 1):
        A[i] = (A[i - 1] + 7 * i) % m

    B = [0] * (n + 1)
    for d in range(1, n + 1):
        for i in range(d, n + 1, d):
            B[i] += A[d]

    ans = 0
    for i in range(1, n + 1):
        ans ^= B[i]

    print(ans)

t = 1
# t = II()
for _ in range(t):
    solve()