# 51nod“省选”模测第二场 B 异或约数和(数论分块)

## Sol

#include<bits/stdc++.h>
#define Pair pair<int, int>
#define MP(x, y) make_pair(x, y)
#define fi first
#define se second
#define int long long
#define LL long long
#define ull unsigned long long
#define Fin(x) {freopen(#x".in","r",stdin);}
#define Fout(x) {freopen(#x".out","w",stdout);}
using namespace std;
const int MAXN = 1e6 + 10, mod = 1e9 + 7, INF = 1e9 + 10;
const double eps = 1e-9;
template <typename A, typename B> inline bool chmin(A &a, B b){if(a > b) {a = b; return 1;} return 0;}
template <typename A, typename B> inline bool chmax(A &a, B b){if(a < b) {a = b; return 1;} return 0;}
template <typename A, typename B> inline LL add(A x, B y) {if(x + y < 0) return x + y + mod; return x + y >= mod ? x + y - mod : x + y;}
template <typename A, typename B> inline void add2(A &x, B y) {if(x + y < 0) x = x + y + mod; else x = (x + y >= mod ? x + y - mod : x + y);}
template <typename A, typename B> inline LL mul(A x, B y) {return 1ll * x * y % mod;}
template <typename A, typename B> inline void mul2(A &x, B y) {x = (1ll * x * y % mod + mod) % mod;}
template <typename A> inline void debug(A a){cout << a << '\n';}
template <typename A> inline LL sqr(A x){return 1ll * x * x;}
template <typename A, typename B> inline LL fp(A a, B p, int md = mod) {int b = 1;while(p) {if(p & 1) b = mul(b, a);a = mul(a, a); p >>= 1;}return b;}
template <typename A> A inv(A x) {return fp(x, mod - 2);}
char c = getchar(); int x = 0, f = 1;
while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x * f;
}
int N;
int S(int n) {
LL t= n&3;
if (t&1) return t/2ull^1;
return t/2ull^n;
}
signed main() {
int ans = 0;
for(int i = 1, nxt; i <= N; i = nxt + 1) {
nxt = N / (N / i);
if((N / i) & 1) {
ans ^= S(nxt) ^ S(i - 1);
}
}
cout << ans;
return 0;
}

0 条评论

• ### 洛谷P4104 [HEOI2014]平衡(dp 组合数学)

可以把题目转化为从$$[1, 2n + 1]$$中选$$k$$个数，使其和为$$(n+1)k$$。

• ### Ubuntu Opencv 图像平滑处理

平滑 也称 模糊, 是一项简单且使用频率很高的图像处理方法。平滑处理时需要用到一个 滤波器 。 最常用的滤波器是 线性 滤波器，线性滤波处理的输出像素值 ( g...

• ### LeetCode74. 搜索二维矩阵&240. 搜索二维矩阵 II

通常情况下在一个矩阵中搜索一个元素时间复杂度是O(m*n)的，但是在这里只用O(m+n)的时间复杂度就能完成，说一下思路  以右上角为起点，如果当前的值...

• ### loj#6032. 「雅礼集训 2017 Day2」水箱(并查集 贪心 扫描线)

一个连通块的内状态使用两个变量即可维护$$ans$$表示联通块内的最大答案，$$f$$表示联通块内$$k=1$$的数量

• ### 哈希表-LeetCode 217、219、220、232（hashset、hashmap）

给定一个整数数组，判断是否存在重复元素。 如果任何值在数组中出现至少两次，函数返回 true。如果数组中每个元素都不相同，则返回 false。

• ### 带权二分图最优匹配(KM)

KM算法是在匈牙利算法的基础上衍生，在二分图匹配的问题上增加权重，变成了一个带权二分图匹配问题，求最优的二分图匹配。