2025.02.25 CW 模拟赛 A. 数论

题面 & 题解

A. 数论

题意

给定 \(n, p\), 让你求:

\[\sum_{i = 1}^n \sum_{j = 1}^p \varphi(i^j) \mod 10^9 + 7 \]

其中 \(n \le 10^7, p \le 10^9\).

思路

首先我们可以线性处理逆元, 并筛出 \(2 \sim 10^7\) 的欧拉函数值.

inv[1] = 1;
for (int i = 2; i <= 1e7; ++i)
	inv[i] = 1ll * (mod - mod / i) * inv[mod % i] % mod;
for (int i = 2; i <= 1e7; ++i) {
	if (!vis[i]) {
		prime[++c] = i;
		is_prime[i] = true;
		vis[i] = true;
		phi[i] = i - 1;
	}
	for (int j = 1; j <= c and i * prime[j] <= 1e7; ++j) {
		vis[i * prime[j]] = true;
		if (!(i % prime[j])) {
			phi[i * prime[j]] = phi[i] * prime[j];
			break;
		}
		phi[i * prime[j]] = phi[i] * phi[prime[j]];
	}
}

由于欧拉函数是积性函数 \((\)详见OI Wiki\()\), 所以我们有 \(\displaystyle \varphi(n) = \prod \varphi(p_i^{\alpha_i})\). 预处理即可.

posted @   Steven1013  阅读(1)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示