51nod 1239 欧拉函数之和
来源:互联网 发布:金融行业seo 编辑:程序博客网 时间:2024/05/29 16:54
描述
对正整数 n ,欧拉函数是小于或等于 n 的数中与 n 互质的数的数目。此函数以其首名研究者欧拉命名,它又称为 Euler’s totient function 、 φ 函数、欧拉商数等。例如:φ(8) = 4(Phi(8) = 4),因为 1,3,5,7 均和 8 互质。
S(n) = Phi(1) + Phi(2) + …… Phi(n),给出n,求S(n),例如:n = 5,S(n) = 1 + 1 + 2 + 2 + 4 = 10,定义Phi(1) = 1。由于结果很大,输出Mod 1000000007的结果。
Input
输入一个数N。(2 <= N <= 10^10)
Output
输出S(n) Mod 1000000007的结果。
Input示例
5
Output示例
10
思路
和 51nod 1244 莫比乌斯函数之和 十分类似的一道题,因此我们可以采用同样的方法推出公式。
求
我们设
已知
所以有
因为
所以
同样我们可以通过记忆化搜索以及分块来优化时间。
AC 代码
#include<cstdio>#include<cstdlib>#include<cstring>#include<stdlib.h>#include<iostream>#include<queue>#include<vector>#include<map>#include<cmath>#include<algorithm>using namespace std;typedef __int64 LL;const int maxn = 5000000;const int MOD = 1000000007;const int mod = 1e5+7;map<LL,LL> mp[mod];LL mu[maxn];int phi[maxn];void init(){ int j; phi[1] = 1; for(int i = 2; i < maxn; i++) if(!phi[i]) for(j = i; j < maxn; j+=i) { if(!phi[j])phi[j] = j; phi[j] = phi[j] / i * (i-1); } for(int i=1; i<maxn; i++) mu[i]=(mu[i-1]+phi[i])%MOD;}LL call(LL x){ if(x<maxn)return mu[x]; LL p=mp[x%mod][x]; if(p)return p; LL ans=(((x%MOD)*((x+1)%MOD)%MOD)*500000004)%MOD; for(LL i=2,la=0; i<=x; i=la+1) { la=x/(x/i); ans=(ans-(la-i+1)%MOD*call(x/i)%MOD+MOD)%MOD; } mp[x%mod][x]=ans; return ans;}int main(){ ios::sync_with_stdio(false); init(); LL n; while(cin>>n) cout<<call(n)<<endl; return 0;}
阅读全文
1 0
- 【51Nod 1239】欧拉函数之和
- 51nod 1239欧拉函数之和
- 【51NOD 1239】欧拉函数之和
- 51nod 1239 欧拉函数之和
- [51NOD]1239 欧拉函数之和
- 51nod 1239 欧拉函数之和
- 51Nod-1239-欧拉函数之和
- 51Nod 1239 欧拉函数之和
- 51nod 1239 欧拉函数之和
- 51nod 1239 欧拉函数之和
- 51nod 1239 欧拉函数之和
- [杜教筛模板] 51Nod 1239 欧拉函数之和
- 51 NOD 1239 欧拉函数之和(杜教筛)
- [杜教筛] 51Nod 1239: 欧拉函数之和
- 51nod-1040-最大公约数之和(欧拉函数)
- 51NOD 1040 最大公约数之和(分析 + 欧拉函数)
- 51nod-1040-1040 最大公约数之和(欧拉函数)
- 51NOD 1040 1040 最大公约数之和 数论 欧拉函数
- 生殖与遗传
- hdu 1872 稳定排序
- pywin32 copy excel sheet阻点经验
- LeetCode 572 Subtree of Another Tree
- 一个故事讲清楚 NIO
- 51nod 1239 欧拉函数之和
- POJ 2175 Evacuation Plan(网络流消负圈算法)
- mqtt组合拳
- 【面试题】MySQL相关
- LeetCode Graph:M310. Minimum Height Trees
- HDU6060-RXD and dividing 简单树形DP+贪心
- 看自己看过的书
- Java 集合系列12之 TreeMap详细介绍(源码解析)和使用示例
- 邻接矩阵无向图 有无环 C实现 (dfs)