[杜教筛] 51nod1220. 约数之和
来源:互联网 发布:浙江省儿童dna数据库 编辑:程序博客网 时间:2024/04/30 20:10
推一下
考虑把
令
那么
如果k=0,反演一下就是陈老师R老师等式了
题目就是求
令
#include <cstdio>#include <iostream>#include <algorithm>#include <map>using namespace std;const int N=1000010,P=1e9+7,inv=(P+1)/6;int p[N],mu[N];inline void Pre(){ mu[1]=1; for(int i=2;i<=1000000;i++){ if(!p[i]) p[++*p]=i,mu[i]=-1; for(int j=1;j<=*p && 1LL*i*p[j]<=1000000;j++){ p[i*p[j]]=1; if(i%p[j]) mu[i*p[j]]=-mu[i]; else break; } } for(int i=1;i<=1000000;i++) mu[i]=(1LL*i*mu[i]+mu[i-1])%P;}map<int,int> M;inline int S(int l,int r){ return 1LL*(r-l+1)*(l+r)/2%P;}inline int Sum(int n){ if(n<=1000000) return mu[n]; if(M.count(n)) return M[n]; int ret=1; for(int i=2,j;i<=n;i=j+1){ j=n/(n/i); ret=(ret-1LL*S(i,j)*Sum(n/i))%P; } return M[n]=ret;}inline int f(int n){ int ret=0; for(int i=1,j;i<=n;i=j+1){ j=n/(n/i); ret=(ret+1LL*S(i,j)*(n/i))%P; } return ret;}inline int g(int n){ int ret=0; for(int i=1,j;i<=n;i=j+1){ j=n/(n/i); ret=(ret+1LL*(j-i+1)*S(1,n/i))%P; } return ret;}int main(){ int n,ans=0; scanf("%d",&n); Pre(); for(int i=1,j,lst=0;i<=n;i=j+1){ j=n/(n/i); int cur=Sum(j); ans=(ans+1LL*(cur-lst)*f(n/i)%P*g(n/i))%P; lst=cur; } printf("%d\n",(ans+P)%P); return 0;}
阅读全文
0 0
- [杜教筛] 51nod1220. 约数之和
- 51nod1220 约数之和
- 51nod1220约数之和
- 【51nod1220】约数之和
- [杜教筛 约数和前缀和] 51Nod 1220 约数之和
- 51Nod-1220-约数之和
- 51nod 1220 约数之和
- 51nod 1220 约数之和
- 约数之和
- 约数之和
- 约数之和
- (51nod1220) 2016.12.30 T3
- [数论][莫比乌斯反演][杜教筛] 51Nod 1220 约数之和
- d020: 约数之和
- Divisor Summation约数之和
- A^B约数之和
- sdnu1037约数之和
- 南邮 OJ 1040 约数之和
- MongoDB和MySQL的区别
- 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)
- 公司通过微信风控系统实时监控员工微信聊天记录
- java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
- View的滑动冲突
- [杜教筛] 51nod1220. 约数之和
- csdn的第一天
- 百度地图SDK申请之获取发布版,开发版SHA1
- 史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)
- MySQL explain执行计划解读
- 腾讯AI Lab刷新人脸检测与识别两大测评国际记录,技术日调用超六亿
- 30岁转行做初级程序员是一种怎样的体验?
- Bagging与随机森林
- 机器学习第5章第4节 : 基于梯度下降的线性分类器