传送门
题意:


思路:直接上杜教筛。
知道怎么推导就很简单了,注意预处理的范围。
然后我因为预处理范围不对被zxyoi教育了(ldx你这个傻×两倍常数活该被卡TLE) 喜闻乐见
代码:

#include<bits/stdc++.h>
#define ri register int
using namespace std;
const int N=7500005,lim=7500000;
typedef long long ll;
namespace Sieve{int pri[N],tot=0,mu[N];ll phi[N];bool vis[N];map<int,int>mpa;map<int,ll>mpb;inline void init(){vis[1]=phi[1]=mu[1]=1;for(ri i=2;i<=lim;++i){if(!vis[i])pri[++tot]=i,phi[i]=i-1,mu[i]=-1;for(ri j=1;j<=tot&&i*pri[j]<=lim;++j){vis[i*pri[j]]=1;if(i==i/pri[j]*pri[j]){phi[i*pri[j]]=pri[j]*phi[i],mu[i*pri[j]]=0;break;}phi[i*pri[j]]=(pri[j]-1)*phi[i],mu[i*pri[j]]=-mu[i];}}for(ri i=2;i<=lim;++i)phi[i]+=phi[i-1],mu[i]+=mu[i-1];}inline int Mu(const int&x){if(x<=lim)return mu[x];if(mpa[x])return mpa[x];int ret=0;for(ri l=2,r;r<x&&l<=x;l=r+1)r=x/(x/l),ret+=Mu(x/l)*(r-l+1);return mpa[x]=1-ret;}inline ll Phi(const int&x){if(x<=lim)return phi[x];if(mpb[x])return mpb[x];ll ret=0;for(ri l=2,r;r<x&&l<=x;l=r+1)r=x/(x/l),ret+=Phi(x/l)*(r-l+1);return mpb[x]=(ll)x*((ll)x+1)/2-ret;}
}
int main(){freopen("lx.in","r",stdin);Sieve::init();int tt,n;scanf("%d",&tt);while(tt--)scanf("%d",&n),cout<<Sieve::Phi(n)<<' '<<Sieve::Mu(n)<<'\n';return 0;
}

转载于:https://www.cnblogs.com/ldxcaicai/p/10367683.html

2019.02.12 bzoj3944: Sum(杜教筛)相关推荐

  1. bzoj3944: Sum//杜教筛

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

  2. bzoj3944 Sum 杜教筛

    模板题,注意杜教筛化式子的技巧: 1.构造求和函数 2.利用积性函数约数性质 3.做差算出单项 4.约数倍数转化贡献 5.分块求商 码: #include<iostream> #inclu ...

  3. BZOJ3944 Sum 杜教筛

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

  4. bzoj 3944: Sum 杜教筛

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

  5. 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)= ...

  6. 杜教筛模板(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 ...

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

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

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

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

  9. 2019年CCPC - 网络赛E:huntian oy【杜教筛】

    题目: HDU---6706:huntian oy 题意: 给定N,a,b,求下面式子的值(求和后再mod 1e9+7): 分析: 一直怯于杜教筛不敢去学习[一看就会的杜教筛],今天终于迈出了这一步, ...

  10. jzoj5224 [GDOI2018模拟7.12]C 杜教筛+自然数幂和

    Description 求 ∑i=1n∑j=1ngcd(i,j)k且n≤1010,k≤5 ∑ i = 1 n ∑ j = 1 n gcd ( i , j ) k 且 n ≤ 10 10 , k ≤ 5 ...

最新文章

  1. 为什么说一次一密加是密抗窃听无条件安全的?
  2. [WPF系列]-Deep Zoom
  3. Scanner类的一个小例子
  4. Java实现qq截图工具
  5. Keras 报错:An operation has `None` for gradient.
  6. (8)Python_分割numpy数组
  7. 计算机固态硬盘装系统,固态硬盘装系统,小编教你固态硬盘如何装系统
  8. 用excel绘制统计图表(清风建模学习笔记)
  9. AdobeFlashPlayer发生安全沙箱冲突
  10. 国产web服务器系统,国产web服务器
  11. ubuntu Qt 找不到 -lGL
  12. matlab声音信号调制-3种方法(附matlab代码)
  13. 专科的计算机跨专业考研,专科生考研心路:跨学历都不怕,怕什么三跨?
  14. matlab求二阶微分方程的通解,二阶常微分方程matlab的数值解和解析解分析总报告.ppt...
  15. MySQL数据操作语言——插入语句、修改语句和删除语句
  16. 然爸读书笔记(2013-2)----格鲁夫给经理人的第一课
  17. ks 曲线_ROC、KS曲线及AUC、KS值
  18. 毕业设计-基于机器学习的股票预测
  19. 阿里云服务器与腾讯云服务器优势比较哪个好?
  20. 中国制造2025主攻方向是智能制造

热门文章

  1. DP动态规划之01背包问题
  2. html如何根据tr自动换行,css实现表格td 自动换行样式
  3. Centos8 安装 mariadb 最新版 10.5.x
  4. java spring boot 项目 热加载 有利于快速开发
  5. Android 四大组件 之 活动(Activity)
  6. 回归分析beta值的标准_多因子建模:回归法和打分法
  7. 小D课堂 - 新版本微服务springcloud+Docker教程_6-05 高级篇幅之高并发情况下
  8. angular.js 验证码注册登录
  9. java将Word文件转换为html文件
  10. 【Flask】通过Flask_login实现用户登录