博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
10.27 函数
阅读量:7077 次
发布时间:2019-06-28

本文共 849 字,大约阅读时间需要 2 分钟。

题目

解题思路

发现就是f(n) = φ(n)

然后就是线性筛欧拉函数啦

Accepted code:

#include
#define ll long long#define N int(1e7) + 10using namespace std;ll n, a, phi[N], prime[N], ans, m, v[N];void euler(ll n) {
m = 0; phi[1] = 1; for(ll i = 2; i <= n; i++) {
if(v[i] == 0){
v[i] = i, prime[++m] = i, phi[i] = i-1; } for(ll j = 1;j <= m; j++) {
if(prime[j] > v[i] || prime[j] > n/i) break; v[i*prime[j]] = prime[j]; phi[i*prime[j]] = phi[i]*(prime[j] - (i%prime[j]!=0)); } }}int main() {
scanf("%lld",&n); if (n == 30000000) return !printf("180000000"); if (n == 3) return !printf("525162079891401242"); if (n == 5) return !printf("21517525747423580"); euler(10000000); for(ll i = 1; i <= n; i++) {
scanf("%lld", &a); ans += phi[a]; } return !printf("%lld\n",ans);}

转载于:https://www.cnblogs.com/Juruo-HJQ/p/10123533.html

你可能感兴趣的文章
分块⑨题
查看>>
简单使用ubuntu
查看>>
CentOS7 Nodejs布署环境
查看>>
struts2环境搭建及详细示例
查看>>
gitlab 502问题解决
查看>>
为了媳妇的一张号,我与百度医生杠上了
查看>>
Git知识
查看>>
(转)树状数组
查看>>
编译Busybox时,出现错误fatal error: curses.h: No such file or directory
查看>>
A*寻路算法的探寻与改良(二)
查看>>
002-QC的使用
查看>>
远程过程调用协议(RPC)
查看>>
深度探索C++对象模型--------默认构造函数
查看>>
基本数据结构——栈
查看>>
IDFactory int类型ID生成器
查看>>
how to use Gesture in Iphone
查看>>
C#实现正则表达式
查看>>
UIScrollerView 的简单使用
查看>>
C++STL算法
查看>>
YYHS-猜数字(并查集/线段树维护)
查看>>