many sum
先枚舉因子,再用因子迭代得到倍數
#include<bits/stdc++.h>
using namespace std;
long long A[2000010],B[2000010];
int main(){
int n,a,m;
cin>>n>>a>>m;
A[1]=a;
for(int i = 2; i <= n; i++){
A[i]=(A[i-1]+7*i)%m ;
}
for(int i = 1; i <= n ; i++){
for(int j = i; j <= n; j += i){ //篩因子
B[j]+=A[i];
}
}
for(int i = 1; i <= n ; i++){
B[i]^=B[i-1];
}
cout<<B[n]<<endl;
}