Description
作为体育委员,C君负责这次运动会仪仗队的训练。仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐。现在,C君希望你告诉他队伍整齐时能看到的学生人数。
Solution
今天晚上剩余时间不多了,所以来水了个题。。
直接欧拉函数算就行了,n只有4000,可以O(n−−√)O(n)暴力求欧拉函数。
如果n是10101010这个题就变成了杜教筛欧拉函数前缀和裸题?!
Source
为了显得代码短一些,只给出了主要代码
int phi(int x)
{
int t = x;
for (int i = 2 ; i * i <= x ; ++ i) if (!(x % i)) {
t -= t / i;
while (!(x % i)) x /= i;
}
if (x > 1) t -= t / x;
return t;
}
int main()
{
#ifdef hany01
File("bzoj2190");
#endif
int Ans = 0, n = read();
For(i, 1, n - 1) Ans += phi(i) << 1;
printf("%d\n", n == 1 ? 0 : Ans + 1);
return 0;
}
//云和积雪苍山晚,烟伴残阳绿树昏。
// -- 周朴《春日秦国怀古》