51nod 237 最大公约数之和 V3 杜教筛
Code:
#include <bits/stdc++.h>
#include <tr1/unordered_map> #define setIO(s) freopen(s".in","r",stdin)
#define ll long long
#define ull unsigned long long
#define maxn 10000000
#define mod 1000000007
#define inv 500000004 using namespace std;
using namespace tr1;
int vis[maxn],prime[maxn],tot;
ll phi[maxn];
unordered_map<ll,ull>ansphi;
void init(){
phi[1] = 1;
for(int i=2;i<maxn; ++i) {
if(!vis[i]) prime[++tot]=i,phi[i] = i-1;
for(int j=1;j<=tot&&i*prime[j]<maxn;++j) {
vis[i*prime[j]]=1;
if(i%prime[j]!=0) phi[i*prime[j]]=phi[i]*(prime[j]-1);
else {
phi[i*prime[j]]=phi[i]*(prime[j]);
break;
}
}
}
for(int i=1;i<maxn;++i) phi[i]+=phi[i-1],phi[i]%=mod;
}
ll solve(ll n){
if(n < maxn) return phi[n];
if(ansphi[n]) return ansphi[n];
ll ans=(ull)(((n%mod)*((n+1)%mod) %mod)*(inv%mod))%mod;
ll ans2=0;
for(ll l=2,r;l<=n;l=r+1) {
r=n/(n/l);
ans2+=(ll)(r-l+1)*solve(n/l);
ans2%=mod;
}
return ansphi[n]=(ans+mod-ans2)%mod;
}
int main(){
//setIO("input");
init();
ll n,ans=0,ans1,tmp;
scanf("%lld",&n);
for(ll l=1,r;l<=n;l=r+1){
r=(n/(n/l));
ans+=(((n/l)%mod)*((n/l)%mod)%mod*(solve(r)+mod-solve(l-1))%mod)%mod;
ans%=mod;
}
printf("%lld",ans);
return 0;
}
51nod 237 最大公约数之和 V3 杜教筛的更多相关文章
- 51NOD 1237 最大公约数之和 V3 [杜教筛]
1237 最大公约数之和 V3 题意:求\(\sum_{i=1}^n\sum_{j=1}^n(i,j)\) 令\(A(n)=\sum_{i=1}^n(n,i) = \sum_{d\mid n}d \c ...
- 【51nod】1238 最小公倍数之和 V3 杜教筛
[题意]给定n,求Σi=1~nΣj=1~n lcm(i,j),n<=10^10. [算法]杜教筛 [题解]就因为写了这个非常规写法,我折腾了3天…… $$ans=\sum_{i=1}^{n}\s ...
- 51nod 1244 莫比乌斯函数之和 【杜教筛】
51nod 1244 莫比乌斯函数之和 莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出.梅滕斯(Mertens)首先使用μ(n)(miu(n))作为莫比乌斯函数的记号.具体定义如下: 如果一个数包含 ...
- 51nod 1244 莫比乌斯函数之和(杜教筛)
[题目链接] http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1244 [题目大意] 计算莫比乌斯函数的区段和 [题解] 利 ...
- [51Nod1238]最小公倍数之和 V3[杜教筛]
题意 给定 \(n\) ,求 \(\sum_{i=1}^n \sum_{j=1}^n lcm(i,j)\). \(n\leq 10^{10}\) 分析 推式子 \[\begin{aligned} an ...
- 51NOD 1238 最小公倍数之和 V3 [杜教筛]
1238 最小公倍数之和 V3 三种做法!!! 见学习笔记,这里只贴代码 #include <iostream> #include <cstdio> #include < ...
- 51 Nod 1238 最小公倍数之和 V3 杜教筛
题目链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1238 题意:求$\sum_{i=1}^{n}\sum_{j=1}^{n}l ...
- 51nod 1237 最大公约数之和 V3(杜教筛)
[题目链接] https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1237 [题目大意] 求[1,n][1,n]最大公约数之和 ...
- 51Nod.1237.最大公约数之和 V3(莫比乌斯反演 杜教筛 欧拉函数)
题目链接 \(Description\) \(n\leq 10^{10}\),求 \[\sum_{i=1}^n\sum_{j=1}^ngcd(i,j)\ mod\ (1e9+7)\] \(Soluti ...
随机推荐
- spring重点一:处理对象创建时间 个数以及方式
/** * 1) 对象创建: 单例/多例(个数) * scope="singleton", 默认值, 即 默认是单例 [service/dao/工具类] * scope=&quo ...
- Python编码显示中文乱码
爬虫时出现问题: import requests data=requests.get('http://roll.news.sina.com.cn/')print(data.text) 输出结果中文显示 ...
- nyoj125-盗梦空间
盗梦空间 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 <盗梦空间>是一部精彩的影片,在这部电影里,Cobb等人可以进入梦境之中,梦境里的时间会比现实中的时 ...
- omap 移植qt4.7.0
准备: 1.Qt源码包 qt-everywhere-opensource-src-4.7.0.tar.gz 2.交叉编译器 arm-eabi-4.4.0.tar.bz2 3.触摸屏校验工具:tslib ...
- 第二篇:SpringBoot配置详解
SpringBoot 是为了简化 Spring 应用的创建.运行.调试.部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖 ...
- 打造一个全命令行的Android构建系统
IDE都是给小白程序员的,大牛级别的程序员一定是命令行控,终端控,你看大牛都是使用vim,emacs 就一切搞定” 这话说的虽然有些绝对,但是也不无道理,做开发这行要想效率高,自动化还真是缺少不了命令 ...
- HDU 3342 -- Legal or Not【裸拓扑排序 &&水题 && 邻接表实现】
Legal or Not Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- Android 开源项目android-open-project解析之(二) GridView,ImageView,ProgressBar,TextView
五.GridView StaggeredGridView 同意非对齐行的GridView,类似Pinterest的瀑布流.而且跟ListView一样自带View缓存,继承自ViewGroup 项目地址 ...
- 最全Pycharm教程(38)——Pycharm版本号控制之远程共享
1.主题 介绍怎样通过GitHub共享你的本地Git版本号库 2.准备工作 (1)Pycharm版本号为2.7或者更高 (2)Git以及GitHub可用 (3)有GitHub storage的读写权限 ...
- sedna载入xml文件
如果有一个xml文件a.xml.须要把它载入到sedna数据库xml_db里. sedna是通过se_term把xml载入到数据库的.有两种方法: 1.通过se_term的-query參数. se_t ...