--- title: "中等计算" created: 2025-11-28 tags: - 算法 --- # 中等计算 ## 题目 [中等计算](https://www.acwing.com/problem/content/description/5376/) ![[image-db84c611.png]] ## 思路分析 ![[image-3db39309.png]] 对于后面部分可以使用取模性质找到答案循环 把偶数对个使用异或性质抵消掉 不过别忘了前半部分(第一列) 对于a\*1……a\*n得老老实实做一遍异或 ## 代码实现 ```cpp #include using namespace std; const int N=1e6+10; int n; int s[N];//预处理1^2^3^……^n的结果 int main() { cin>>n; for(int i=1;i<=n;i++) s[i]=s[i-1]^i; int res=0; //a1^……^an是要算一遍的 for(int i=0;i>a; res^=a; } for(int i=1;i<=n;i++) { int k=n/i;//看有奇数对还是偶数对 if(k&1)//同真为真 如果满足就是奇数 {//如果是奇数对 就算上一遍循环的 res^=s[i-1]; } //不管是奇数是偶数 都得把零下来的异或进去 res^=s[n%i]; } cout<