欧拉函数之和(51nod 1239)
输入一个数N。(2 <= N <= 10^10)
输出S(n) Mod 1000000007的结果。
5
10
#include<cstdio>
#include<iostream>
#define N 2000010
#define ha 2333333
#define mod 1000000007
#define ni 500000004
#define lon unsigned long long
using namespace std;
int phi[N],prime[N],cnt,tot,head[N],vis[N];
lon n,sum[N];
struct node{int pre;lon x,v;}e[N];
void add(int u,lon v,lon x){
e[++cnt].v=v;e[cnt].x=x;e[cnt].pre=head[u];head[u]=cnt;
}
void get_prime(){
phi[]=;
for(int i=;i<N;i++){
if(!vis[i]) vis[i]=,prime[++tot]=i,phi[i]=i-;
for(int j=;j<=tot&&i*prime[j]<N;j++){
vis[i*prime[j]]=;
phi[i*prime[j]]=phi[i]*(prime[j]-);
if(i%prime[j]==){
phi[i*prime[j]]=phi[i]*prime[j];
break;
}
}
}
for(int i=;i<N;i++) sum[i]=(sum[i-]+phi[i])%mod;
}
lon solve(lon x){
if(x<N) return sum[x];
lon ans=,k=x%ha,last;
for(int i=head[k];i;i=e[i].pre)
if(e[i].v==x) return e[i].x;
for(lon i=;i<=x;i=last+){
last=x/(x/i);
ans=(ans+(last-i+)%mod*solve(x/i)%mod)%mod;
}
ans=((x%mod*(x+)%mod)%mod*ni%mod-ans+mod)%mod;
add(k,x,ans);
return ans;
}
int main(){
get_prime();
cin>>n;
cout<<solve(n);
return ;
}
欧拉函数之和(51nod 1239)的更多相关文章
- [51Nod 1244] - 莫比乌斯函数之和 & [51Nod 1239] - 欧拉函数之和 (杜教筛板题)
[51Nod 1244] - 莫比乌斯函数之和 求∑i=1Nμ(i)\sum_{i=1}^Nμ(i)∑i=1Nμ(i) 开推 ∑d∣nμ(d)=[n==1]\sum_{d|n}\mu(d)=[n== ...
- 51 NOD 1239 欧拉函数之和(杜教筛)
1239 欧拉函数之和 基准时间限制:3 秒 空间限制:131072 KB 分值: 320 难度:7级算法题 收藏 关注 对正整数n,欧拉函数是小于或等于n的数中与n互质的数的数目.此函数以其首名研究 ...
- 51nod1239 欧拉函数之和
跟1244差不多. //由于(x+1)没有先mod一下一直WA三个点我... //由于(x+1)没有先mod一下一直WA三个点我... #include<cstdio> #include& ...
- 51nod 1239 欧拉函数之和(杜教筛)
[题目链接] https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1239 [题目大意] 计算欧拉函数的前缀和 [题解] 我们 ...
- 【51nod-1239&1244】欧拉函数之和&莫比乌斯函数之和 杜教筛
题目链接: 1239:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1239 1244:http://www.51nod. ...
- 【51Nod 1239】欧拉函数之和
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1239 还是模板题. 杜教筛:\[S(n)=\frac{n(n+1)}{2 ...
- 【51nod】1239 欧拉函数之和 杜教筛
[题意]给定n,求Σφ(i),n<=10^10. [算法]杜教筛 [题解] 定义$s(n)=\sum_{i=1}^{n}\varphi(i)$ 杜教筛$\sum_{i=1}^{n}(\varph ...
- 【51nod】1239 欧拉函数之和
题解 写完上一道就开始写这个,大体上就是代码改了改而已= = 好吧,再推一下式子! \(\sum_{i = 1}^{n}i = \sum_{i = 1}^{n}\sum_{d | i}\phi(d) ...
- 51nod 1239 欧拉函数之和【欧拉函数+杜教筛】
和bzoj 3944比较像,但是时间卡的更死 设\( f(n)=\sum_{d|n}\phi(d) g(n)=\sum_{i=1}^{n}f(i) s(n)=\sum_{i=1}^{n}\phi(i) ...
随机推荐
- django 数据库中中文转化为韩语拼音
1.安装模块 django-uuslug pip install django-uuslug 2.导入模块 from uuslug import slugify 3.使用模块 slugify('天龙八 ...
- 1_HDFS理论及安装部署
一.hadoop简介 1.hadoop的初衷是为了解决Nutch的海量数据爬取和存储的需要,HDFS来源于google的GFS,MapReduce来源于Google的MapReduce,HBase来源 ...
- 01_13_Struts_默认Action
01_13_Struts_默认Action 1. 配置struts默认Action <package name="default" namespace="/&quo ...
- destoon去除编辑器替换图片删除原图功能,删除信息删除相关图片功能
去除这些功能会造成大量垃圾图片,但是客户存在大量复制内容,其中图片一样,为了防止客户替换其中一个图片或者删除信息 造成其他复制信息图片丢失 去除文章模型级联图片功能. 对应模块class.php se ...
- 21.Yii2.0框架多表关联一对多查询之性能优化--模型的使用
控制器里 功能: 通过分类,查分类下的所有文章 //关联查询 public function actionRelatesearch(){ //关联查询 //查询方法一(查一行) 一维数组下的值是obj ...
- java中,为什么char类型数组可以直接用数组名打印,打印结果居然不是地址值!
char类型的数组就相当于一个字符串. 因为输出流System.out是PrintStream对象,PrintStream有多个重载的println方法,其中一个就是public void print ...
- python week08 并发编程之多线程--理论部分
一. 什么是线程 1.定义 线程就像一条工厂车间里的流水线,一个车间里可以用很多流水线,来执行生产每个零部件的任务. 所以车间可以看作是进程,流水线可以看作是线程.(进程是资源单位,线程是执行单位) ...
- mongodb的基本操作数据更新
先启动服务器 查看数据库 选择数据库 删除数据库 插入信息 查看插入的表名 查看信息 修改表数据 修改指定信息,其他信息不改变 可以使不存在的命令进行修改并保存 修改多条数据 删除数据 删除表 查看集 ...
- 基于 FPGA 的图像边缘检测
本文主要内容是实现图像的边缘检测功能 目录 mif文件的制作 调用 ip 核生成rom以及在 questasim 仿真注意问题 灰度处理 均值滤波:重点是3*3 像素阵列的生成 sobel边缘检测 图 ...
- hiho编程练习赛20
模版题的世界 题目1 : 无根数变有根树 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一棵包含 N 个节点的无根树,小Hi想知道如果指定其中某个节点 K 为根,那 ...