[数论] Codeforces 1717E Madoka and The Best University
题目大意
求
题解
令 ,
所以可以在 的时间内求出全体 。
注意到对于每个 , 只会枚举到 ,所以该式可以 求出。
最终时间复杂度 。
Code
#include <bits/stdc++.h>
using namespace std;
#define LL long long
const LL MOD = 1e9 + 7;
const int maxn = 100005;
int mu[maxn];
bool not_prime[maxn];
vector<int> prime;
void get_mu(int len) {
mu[1] = not_prime[1] = 1;
for (int i = 2;i <= len;++i) {
if (!not_prime[i]) { prime.push_back(i); mu[i] = -1; }
for (auto j : prime) {
int mid = i * j;
if (mid > len) break;
not_prime[mid] = 1;
if (i % j == 0) { mu[mid] = 0; break; }
mu[mid] = -mu[i];
}
}
}
int f[maxn], g[maxn];
int main() {
get_mu(100000);
int n;cin >> n;
for (int x = 1;x <= n;++x) {
int c = 1;
for (c = 1;c * c < x;++c) {
if (x % c == 0) {
f[x] += mu[c] * (x / c - 1);
f[x] += mu[x / c] * (c - 1);
}
}
if (c * c == x) f[x] += mu[c] * (x / c - 1);
}
LL ans = 0;
for (int x = 1;x < n;++x) {
LL temp = 0;
for (int d = 1;d <= (n - 1) / x;++d)
temp = (temp + ((n - x * d) / __gcd(n - x * d, d) * d)) % MOD;
ans = (ans + temp * f[x] % MOD) % MOD;
}
cout << ans << endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2020-09-04 [图论分块] HDU 4858 项目管理