orz rzz
题目大意:设
f(n)=∑ni=1ϕ(ni)mod(n+1)
,
g(n)=∑ni=1f(i)
,求
g(5∗108)
题解:
f(n)=ϕ(n)∑ni=1(−1)i−1
当 n 为奇数,
f(n)=ϕ(n)
,n 为偶数,
f(n)=0
然后省去偶数的位置就好了
#include <cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<ctime>
#include<cmath>
#include<cstdlib>
#include<cstdio>
#define LL long long
using namespace std;
const int n = 500000000;
LL ans = 1,tot;
int phi[(n + 1) >> 1],prime[n / 10];
int main()
{
for (int i = 2;i <= n;i ++)
{
if (~i & 1) continue;
if (!phi[i >> 1]) prime[tot ++] = i,phi[i >> 1] = i - 1;
ans += phi[i >> 1];
for (int j = 0;j < tot && prime[j] * i <= n;j ++)
{
if (i % prime[j] == 0)
{
phi[i * prime[j] / 2] = phi[i >> 1] * prime[j];
break;
}
else
phi[i * prime[j] / 2] = phi[i >> 1] * (prime[j] - 1);
}
}
cout << ans << endl;
return 0;
}