HYSBZ 3944 Sum
来源:互联网 发布:手机贵金属软件 编辑:程序博客网 时间:2024/05/17 22:15
HYSBZ 3944 Sum
题目描述:
输入正整数
题解:
杜教筛模板题。
以欧拉函数为例:
令
所以
预处理出前
题目链接: vjudge 原网站
代码:
#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>using namespace std;#define MAXN 5000007#define MAXP MAXN / 10#define MAXM 200007static int T, pr_tot, prime[MAXP];static bool npr[MAXN], vis_phi[MAXM], vis_mu[MAXM];static long long N;static long long phi[MAXN], mu[MAXN], mem_phi[MAXM], mem_mu[MAXM];long long solve_phi(long long x){ if (x < MAXN) return phi[x]; if (vis_phi[N / x]) return mem_phi[N / x]; long long ans = (x + 1) * x / 2; for (long long i = 2, last; i <= x; i = last + 1) { last = x / (x / i); ans -= (last - i + 1) * solve_phi(x / i); } return vis_phi[N / x] = 1, mem_phi[N / x] = ans;}long long solve_mu(long long x){ if (x < MAXN) return mu[x]; if (vis_mu[N / x]) return mem_mu[N / x]; long long ans = 1; for (long long i = 2, last; i <= x; i = last + 1) { last = x / (x / i); ans -= (last - i + 1) * solve_mu(x / i); } return vis_mu[N / x] = 1, mem_mu[N / x] = ans;}int main(){ phi[1] = mu[1] = 1; for (int i = 2; i < MAXN; i++) { if (!npr[i]) prime[pr_tot++] = i, phi[i] = i - 1, mu[i] = -1; for (int j = 0; j < pr_tot && (long long)i * prime[j] < MAXN; j++) { npr[i * prime[j]] = 1; if (i % prime[j]) { phi[i * prime[j]] = phi[i] * (prime[j] - 1); mu[i * prime[j]] = -mu[i]; } else { phi[i * prime[j]] = phi[i] * prime[j]; mu[i * prime[j]] = 0; break; } } } for (int i = 1; i < MAXN; i++) phi[i] += phi[i-1], mu[i] += mu[i-1]; for (scanf("%d", &T); T; T--) { scanf("%lld", &N); memset(vis_phi, 0, sizeof(vis_phi)); memset(vis_mu, 0, sizeof(vis_mu)); printf("%lld %lld\n", solve_phi(N), solve_mu(N)); } return 0;}
提交记录(AC / Total = 1 / 6):
0 0
- HYSBZ 3944 Sum
- HYSBZ 1257:余数之和sum【数学】
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- c++第四次实验-项目一
- 有时候错误也很美!
- 逐浪微站H5轻设计
- 用户登录记住密码
- PCIe INTx parse in ACPI
- HYSBZ 3944 Sum
- 例6.2-1&6.2-2
- Matlab 图像压缩编码—理论讲解
- maven3常用命令、java项目搭建、web项目搭建详细图解
- Java04-数组、进制转换与优化
- 2017蓝桥杯:等差素数列
- Linux下获得时间差,精确到微秒级别
- 【REST】REST和JAX-RS相关知识介绍
- GitHub vs GitLab:它们有什么区别?那么Git呢?