原文链接http://www.cnblogs.com/zhouzhendong/p/8671759.html

题目传送门 - BZOJ3944

题意

  多组数据(组数<=10)。

  每组数据一个正整数$n(n\leq 10^{10})$。

  让你求$\sum_{i=1}^{n}\varphi(i)$以及$\sum_{i=1}^{n}\mu(i)$。

题解

  杜教筛模版题。

  杜教筛学习->传送门

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=2e6+5;
int lim=2e6,T;
LL n,prime[N],pcnt,u[N],phi[N],U[N],Phi[N];
int vis[N],mark=0;
void init(int n){
memset(phi,0,sizeof phi);
u[1]=phi[1]=1;
for (int i=2;i<=n;i++){
if (!phi[i])
prime[++pcnt]=i,u[i]=-1,phi[i]=i-1;
for (int j=1;j<=pcnt&&prime[j]*i<=n;j++){
int k=prime[j]*i;
if (i%prime[j])
u[k]=-u[i],phi[k]=phi[i]*(prime[j]-1);
else {
u[k]=0,phi[k]=phi[i]*prime[j];
break;
}
}
}
for (int i=2;i<=n;i++)
u[i]+=u[i-1],phi[i]+=phi[i-1];
memset(vis,0,sizeof vis);
}
void solve(LL x){
if (x<=lim)
return;
LL y=n/x;
if (vis[y]==mark)
return;
vis[y]=mark;
U[y]=1,Phi[y]=x*(x+1)/2;
for (LL i=2,j;i<=x;i=j+1){
j=x/(x/i);
solve(x/i);
U [y]-=(x/i<=lim?u [x/i]:U [n/(x/i)])*(j-i+1);
Phi[y]-=(x/i<=lim?phi[x/i]:Phi[n/(x/i)])*(j-i+1);
}
}
int main(){
init(lim);
scanf("%d",&T);
while (T--){
scanf("%lld",&n);
if (n<=lim)
printf("%lld %lld\n",phi[n],u[n]);
else {
mark++;
solve(n);
printf("%lld %lld\n",Phi[1],U[1]);
}
}
return 0;
}

  

BZOJ3944 Sum 数论 杜教筛的更多相关文章

  1. BZOJ3944: Sum(杜教筛模板)

    BZOJ3944: Sum(杜教筛模板) 题面描述 传送门 题目分析 求\(\sum_{i=1}^{n}\mu(i)\)和\(\sum_{i=1}^{n}\varphi(i)\) 数据范围线性不可做. ...

  2. 2019.02.12 bzoj3944: Sum(杜教筛)

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

  3. 【BZOJ3944】Sum(杜教筛)

    [BZOJ3944]Sum(杜教筛) 题面 求\[\sum_{i=1}^n\mu(i)和\sum_{i=1}^n\phi(i)\] 范围:\(n<2^{31}\) 令\[S(n)=\sum_{i ...

  4. BZOJ 4176: Lucas的数论 [杜教筛]

    4176: Lucas的数论 题意:求\(\sum_{i=1}^n \sum_{j=1}^n \sigma_0(ij)\) \(n \le 10^9\) 代入\(\sigma_0(nm)=\sum_{ ...

  5. bzoj 4176: Lucas的数论 -- 杜教筛,莫比乌斯反演

    4176: Lucas的数论 Time Limit: 30 Sec  Memory Limit: 256 MB Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么 ...

  6. bzoj 3944: Sum(杜教筛)

    3944: Sum Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 4930  Solved: 1313[Submit][Status][Discuss ...

  7. 【BZOJ4176】Lucas的数论-杜教筛

    求$$\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}f(ij)$$,其中$f(x)$表示$x$的约数个数,$0\leq n\leq 10^9$,答案膜$10^9+ ...

  8. [bzoj 4176] Lucas的数论 (杜教筛 + 莫比乌斯反演)

    题面 设d(x)d(x)d(x)为xxx的约数个数,给定NNN,求 ∑i=1N∑j=1Nd(ij)\sum^{N}_{i=1}\sum^{N}_{j=1} d(ij)i=1∑N​j=1∑N​d(ij) ...

  9. 【XSY2731】Div 数论 杜教筛 莫比乌斯反演

    题目大意 定义复数\(a+bi\)为整数\(k\)的约数,当且仅当\(a\)和\(b\)为整数且存在整数\(c\)和\(d\)满足\((a+bi)(c+di)=k\). 定义复数\(a+bi\)的实部 ...

随机推荐

  1. Mysql 通过frm&ibd 恢复数据

    mysql存储在磁盘中,各种天灾人祸都会导致数据丢失.大公司的时候我们常常需要做好数据冷热备,对于小公司来说要做好所有数据备份需要支出大量的成本,很多公司也是不现实的.万一还没有做好备份,数据被误删除 ...

  2. Python-数据库 基本SQL语句

    1. 数据库是什么 2. MySQL安装 3. 用户授权 4. 数据库操作 - 数据表 - 数据类型 - 是否可以为空 - 自增 - 主键 - 外键 - 唯一索引 数据行 增 删 改 查 排序: or ...

  3. python-包及日志模块使用

    一.包 1.包就是一个保护有__init__.py文件的文件夹,包的本质就是一种模块,即包是用来导入使用的,包内部包含的文件也都是用来被导入使用的.包是为了更好组织好模块,就是一个文件夹. 注:在py ...

  4. Confluence 6 配置验证码(Captcha)来防止垃圾

    如果你的 Confluence 站点是对公众开放的(允许匿名用户使用,添加评论,创建页面等),你可能会发现你的站点会被自动创建很多垃圾页面,评论或者其他垃圾内容. 你可以配置让 Confluence ...

  5. MONGODB数据基础与命令

  6. 用来表达更复杂的sql语句!!!!!extra 原声sql

    extra 用来表达更复杂的sql语句!!!!! extra可以指定一个或多个 参数,例如 select, where or tables. 这些参数都不是必须的,但是你至少要使用一个!要注意这些额外 ...

  7. ajax请求数据时什么时候用GET,什么时候用POST

    GET的目的就如同其名字一样是用于获取信息的.它旨在显示出页面上你要阅读的信息.浏览器会缓冲GET请求的执行结果,如果同样的GET请求再次发出,浏览器就会显示缓冲的结果而不是重新运行整个请求.重新请求 ...

  8. 论文阅读笔记九:SEMANTIC IMAGE SEGMENTATION WITH DEEP CONVOLUTIONAL NETS AND FULLY CONNECTED CRFS (DeepLabv1)(CVPR2014)

    论文链接:https://arxiv.org/abs/1412.7062 摘要 该文将DCNN与概率模型结合进行语义分割,并指出DCNN的最后一层feature map不足以进行准确的语义分割,DCN ...

  9. docker批量删除none镜像

    1.直接用docker images | grep none | awk ‘{print $3}’ |xgars docker rmi 通过关键字搜索,得到docker id,进行删除

  10. 回到未来123Back To The Future

    或许,决定着现在的过去已经无法改变,但决定着未来的现在,却在我们每个人的手里. 路?我们要去的地方不需要路.(Roads? Where we're going we don't need roads) ...