模板题,注意杜教筛化式子的技巧:

1、构造求和函数

2、利用积性函数约数性质

3、做差算出单项

4、约数倍数转化贡献

5、分块求商

码:

#include<iostream>
#include<cstdio>
#include<map>
#include<cmath>
using namespace std;
#define M 3000000
#define ll long long
int tot,i,j,T,su[M+5];
ll ans,phe[M+5],n[999],N,mhe[M+5],mu[M+5],phi[M+5];
bool he[M+5];
map<int,ll>pma;
map<int,int>mma;
void eular()
{mu[1]=phi[1]=1;for(i=2;i<=N;i++){if(!he[i]){su[++tot]=i;           phi[i]=i-1;mu[i]=-1;}for(j=1;j<=tot&&su[j]*i<=N;j++){int k=su[j]*i;he[k]=1;if(i%su[j]==0){phi[k]=su[j]*phi[i];mu[k]=0;break;}else{phi[k]=phi[i]*phi[su[j]];mu[k]=-mu[i];}  }}for(i=1;i<=N;i++)phe[i]=phe[i-1]+phi[i],mhe[i]=mhe[i-1]+mu[i];
}
ll dfs1(ll o)
{if(o<=N)return phe[o]; if(pma[o])return pma[o];
ll lin=o*(1+o)/2;
ll l;
for(l=2;l<=o;l++)
{
ll oo=o/l;
lin-=((o/oo)-l+1)*dfs1(oo) ;
l=o/oo;
}
pma[o]=lin;
return lin;
}
int dfs2(int o)
{   if(o<=N)return mhe[o]; if(mma[o])return mma[o];
int lin=1;
unsigned int l;
for(l=2;l<=o;l++)
{
int oo=o/l;
lin-=((o/oo)-l+1)*dfs2(oo);
l=o/oo;
}
mma[o]=lin;
return lin;
}
int main()
{scanf("%d",&T);
for(i=1;i<=T;i++)
{
scanf("%lld",&n[i]);
N=max(n[i],N);
}
N=pow(N,2.000/3) ;
eular();
for(i=1;i<=T;i++)
{
printf("%lld ",dfs1(n[i]));
printf("%d\n",dfs2(n[i]));
}
}

bzoj3944 Sum 杜教筛相关推荐

  1. bzoj3944: Sum//杜教筛

    bzoj3944: Sum 前几天的blog,没写完,现在补上吧- 题意 求莫比乌斯函数和欧拉函数的前缀和.N<=2^31-1.T(<=10)组询问. 题解 杜教筛. 然而这篇博客不是写题 ...

  2. BZOJ3944 Sum 杜教筛

    看完题一副不可做的样子 默默点开了题解 发现是杜教筛 就花了半天学习了一下 先说下杜教筛 可以在优于线性的复杂度内求出积性函数的前缀和 下求 ∑ni=1f(i) \sum_{i=1}^nf(i) 令 ...

  3. bzoj 3944: Sum 杜教筛

    本来以为这种东西只能O(N)线性筛,但是大千世界,无(sang)奇(xin)不(bing)有(kuang),确实存在更快的算法. 省选的时候rzz讲这种东西在国内OI称为杜教筛,用来求数论函数的前缀和 ...

  4. 2019-ACM-ICPC-南京区网络赛-E. K Sum(莫比乌斯反演 + 杜教筛)

    K Sum 推式子 Fn(k)=∑l1=1n∑l2=1n⋯∑lk=1n(gcd(l1,l2,-,lk))2=∑d=1nd2∑l1=1nd∑l2=1nd⋯∑lk=1nd(gcd(l1,l2,-,lk)= ...

  5. 杜教筛模板(P4213 【模板】杜教筛(Sum))

    P4213 [模板]杜教筛(Sum) 套路推式子 求s(n)=∑i=1nf(i)∑i=1n(f∗g)(i)=∑i=1n∑d∣if(d)g(id)=∑d=1n∑i=1⌊nd⌋f(i)g(d)=∑d=1n ...

  6. P4213-[模板]杜教筛(Sum)

    正题 题目链接:https://www.luogu.com.cn/problem/P4213 题目大意 给出nnn,求∑i=1nφ(i)\sum_{i=1}^n\varphi(i)i=1∑n​φ(i) ...

  7. luoguP4213 【模板】杜教筛(Sum)杜教筛

    链接 luogu 思路 为了做hdu来学杜教筛. 杜教筛模板题. 卡常数,我加了register居然跑到不到800ms. 太深了. 代码 // luogu-judger-enable-o2 #incl ...

  8. 【bzoj4176】Lucas的数论 莫比乌斯反演+杜教筛

    题目描述 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目"求Sigma(f(i)),其中1<=i<=N" ...

  9. 数论函数 - 莫比乌斯函数与莫比乌斯反演 - 基础杜教筛

    原文链接http://www.cnblogs.com/zhouzhendong/p/8627380.html 省选后发现我数学好差.于是先从数论开始学习. 如果发现本文有任何错误,欢迎留言指正. 本文 ...

最新文章

  1. redis启动后出现WARNING you have Transparent Huge Pages (THP) support enabled in your kernel问题...
  2. wordpress进阶教程(十九):创建自定义的找回密码页面
  3. (47)FPGA同步复位与异步复位(异步复位同步释放)
  4. jquery 时间相减获取天数_Js中处理日期加减天数
  5. sql 通过游标 拆分xml结构
  6. JHipster简介
  7. Hadoop报错 Failed to locate the winutils binary in the hadoop
  8. ArcMAP 设置图层透明度
  9. IDEA 创建java项目
  10. 微信绑定的卡服务器,微信亲属卡有什么作用 微信亲属卡怎么绑定
  11. 【小游戏】2D游戏你比划我来猜(unity和陀螺仪交互)
  12. HTML页面跳转及参数传递
  13. C语言的内存问题总结
  14. excel计算机一级打不开,excel打不开的原因及解决方法
  15. Java萌新入门的第一篇文章
  16. 56.com flash http://www.56.com/deux4_97177389.swf
  17. 什么是带状线、微带线?参考平面与传输线那些事儿
  18. HTML 6种空格nbsp;ensp;emsp;thinsp;zwnj;zwj;空白空格的区别
  19. photoswiper
  20. Proxifier Socks5 代理(内网访问、远程办公)

热门文章

  1. Python 基础知识学习笔记——OpenCV(1)
  2. vrm华为_华为-笔记本电脑如何安装FusionCompute虚拟化平台?
  3. 回望2019,展望2020
  4. 创建选修专业表oracle,数据库及数据表的创建与删除 (Oracle实验)
  5. oracle19c 安装权限_Oracle 数据库安装系列一:19C 软件安装和补丁升级
  6. Spark MLlib中的协同过滤
  7. Python统计TXT词云
  8. android 高质量游戏,你玩过几款?2013年度十大安卓热门游戏大盘点
  9. sendfile实现文件服务器,sendfile
  10. 计算机word设置渐变填充,Word中鲜为人知的渐变效果设置