\(\text{Problem}\)

\[\sum_{i=1}^n \varphi(i)
\]

\[\sum_{i=1}^n \mu(i)
\]

\(1 \le n < 2^{31}\)

\(Solution\)

终于开始学杜教筛了!!!

求积性函数 \(f\) 的前缀和,杜教筛可以低于线性

考虑卷积,构造积性函数 \(h = f * g\)

然后套路地推出一个重要的结论

\[g(1)S(n)=\sum_{i=1}^n(f*g)(i)-\sum_{i=2}^n S(\lfloor \frac n i \rfloor)
\]

这是一个递归式,快速计算这个式子

要能快速 \(h\) 的前缀和,最后的式子整出分块

提前筛出 \(n^{\frac 2 3}\) 以内 \(f\) 的前缀和,算到直接使用

用 \(\text{unordered_map}\) 存下已经计算过的 \(f\) 的前缀和,进行记忆化

然后对于本题就是利用

\[\varphi * I = ID
\]
\[\mu * I = \epsilon
\]

\(\text{Code}\)

#include<cstdio>
#include<tr1/unordered_map>
#define LL long long
using namespace std; tr1::unordered_map<int, LL> S_phi;
tr1::unordered_map<int, int> S_mu; const int MAXN = 3e6;
int vis[MAXN + 5], mu[MAXN + 5], prime[MAXN], totp;
LL phi[MAXN + 5];
inline void sieve()
{
vis[1] = mu[1] = phi[1] = 1;
for(register int i = 2; i <= MAXN; i++)
{
if (!vis[i]) prime[++totp] = i, mu[i] = -1, phi[i] = i - 1;
for(register int j = 1; j <= totp && prime[j] * i <= MAXN; j++)
{
vis[i * prime[j]] = 1;
if (i % prime[j]) phi[i * prime[j]] = phi[i] * phi[prime[j]], mu[i * prime[j]] = -mu[i];
else{phi[i * prime[j]] = phi[i] * prime[j]; break;}
}
}
for(register int i = 1; i <= MAXN; i++) mu[i] += mu[i - 1], phi[i] += phi[i - 1];
} LL Sum_phi(LL n)
{
if (n <= MAXN) return phi[n];
if (S_phi[n]) return S_phi[n];
LL res = n * (n + 1) / 2, j;
for(register LL i = 2; i <= n; i = j + 1)
{
j = n / (n / i);
res -= (j - i + 1) * Sum_phi(n / i);
}
return S_phi[n] = res;
}
int Sum_mu(LL n)
{
if (n <= MAXN) return mu[n];
if (S_mu[n]) return S_mu[n];
LL res = 1, j;
for(register LL i = 2; i <= n; i = j + 1)
{
j = n / (n / i);
res -= (j - i + 1) * Sum_mu(n / i);
}
return S_mu[n] = res;
} int main()
{
sieve();
int T; scanf("%d", &T);
for(; T; --T)
{
LL n; scanf("%lld", &n);
printf("%lld %d\n", Sum_phi(n), Sum_mu(n));
}
}

最新文章

  1. 直播推流之blibli和拉流LFLiveKit
  2. 浅谈BFC
  3. js获取倒计时
  4. 如何实现 Android 应用的持续部署?
  5. JSONP使用笔记
  6. java的IO操作之--RandomAccessFile
  7. Git之 手把手教你使用Git
  8. 【转载】10个有用的du命令行
  9. Valid Anagram 解答
  10. jwplayer 限制拖动事件 快进 快退
  11. USACO Section 1.1-2 Greedy Gift Givers
  12. linux服务器下安装node
  13. Mysql数据库索引
  14. 【转】tomcat logs 目录下各日志文件的含义
  15. python2.6.6 升级 2.7.X
  16. 第三十二课 linux内核链表剖析
  17. Bundle类解读
  18. Iconfont在移动端应用的问题
  19. 随机产生div背景颜色变化
  20. 《Forward团队-爬虫豆瓣top250项目-设计文档》

热门文章

  1. ES文件传输助手1.0.0
  2. 【ASP.NET Core】MVC控制器的各种自定义:特性化的路由规则
  3. 【每日一题】【动态规划】2022年1月30日-NC127 最长公共子串
  4. 【JVM调优】Day01:Garbage的概念、垃圾回收的算法(标记清除、拷贝、标记压缩)、各种垃圾回收器(Serial、Parallel、CMS并发)及存在的问题
  5. GitHub 开源了多款字体「GitHub 热点速览 v.22.48」
  6. 后疫情办公时代——你需要的多人同步协同编辑Demo(可粘贴可撤销)
  7. prometheus-监控docker服务器
  8. JavaBean为何物?
  9. 终端安装python3使用如下指令
  10. python3连接postgresql/greenpulm