bzoj3944Sum
3944: Sum
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 5149 Solved: 1385
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
1
2
8
13
30
2333
Sample Output
2 0
22 -2
58 -3
278 -3
1655470 2
杜教筛入门?
http://blog.csdn.net/popoqqq/article/details/45023331
#include<bits/stdc++.h>
#define rint register int
#define ll long long
#define N 2000001
using namespace std;
int pri[N>>],vis[N],cnt,cas,n;
ll phi[N],mo[N],p[N],q[N];
void predeal(){
mo[]=phi[]=;
for(rint i=;i<N;++i){
if(!vis[i]){phi[i]=i-;mo[i]=-;pri[++cnt]=i;}
for(rint j=;j<=cnt&&pri[j]*i<N;++j){
vis[i*pri[j]]=;
if(i%pri[j]){phi[i*pri[j]]=phi[i]*(pri[j]-);mo[i*pri[j]]=-mo[i];}
else{phi[i*pri[j]]=phi[i]*pri[j];mo[i*pri[j]]=;break;}
}
}
for(rint i=;i<N;++i)phi[i]+=phi[i-],mo[i]+=mo[i-];
}
ll getp(int x){return x<N?phi[x]:p[n/x];}
ll getq(int x){return x<N?mo[x]:q[n/x];}
void solve(int x){
if(x<N)return;int i,j=,t=n/x;
if(vis[t])return;vis[t]=;
p[t]=(1ll*x+)*x/;q[t]=;
while(j<x){
i=j+;j=x/(x/i);solve(x/i);
p[t]-=getp(x/i)*(j-i+);
q[t]-=getq(x/i)*(j-i+);
}
}
int main(){
scanf("%d",&cas);predeal();
while(cas--){
scanf("%d",&n);memset(vis,,sizeof(vis));
if(n<N)printf("%lld %lld\n",phi[n],mo[n]);
else{solve(n);printf("%lld %lld\n",p[],q[]);}
}
return ;
}
bzoj3944Sum的更多相关文章
- [模板] 杜教筛 && bzoj3944-Sum
杜教筛 浅谈一类积性函数的前缀和 - skywalkert's space - CSDN博客 杜教筛可以在\(O(n^{\frac 23})\)的时间复杂度内利用卷积求出一些积性函数的前缀和. 算法 ...
随机推荐
- java中final 关键字的作用
final 关键字的作用 java中的final关键字可以用来声明成员变量.本地变量.类.方法,并且经常和static一起使用声明常量. final关键字的含义: final在Java中是一个保留的关 ...
- emqtt 试用(七)追踪
追踪 EMQ 消息服务器支持追踪来自某个客户端(Client)的全部报文,或者发布到某个主题(Topic)的全部消息. 追踪客户端(Client): ./bin/emqttd_ctl trace cl ...
- Kompose: Docker-compose 到 Kubernetes 的迁移工具
Docker 让每个人都能够从 Docker Registry 启动一个打包好的 Docker 应用.Docker-Compose在Docker基础上解决了多容器应用之间的依赖启动问题. Docker ...
- Jmeter入门(01)Jmeter的下载和安装
一.什么是Jmeter 1.一款优秀的.开源的.免费的.功能测试和性能测试 工具 Jmeter ,使用Java开发的一款优秀的开源免费测试工具,主要用来做功能测试和性能测试(压力测试/负载测试),用J ...
- HTTP协议扫盲(四)HTTP协议进阶 - MIME类型
一.概念和原理 1.什么是MIME类型? MIME类型,即多用途互联网邮件扩展,它是一个互联网标准,在1992年最早应用于电子邮件系统,但后来也应用到浏览器. 服务器会将它们发送的多媒体数据的类型告诉 ...
- GIT入门笔记(2)- 典型的工作模式
分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库. 下图是经典的git开发过程. Git的功能特性: ...
- word2vec初探(用python简单实现)
为什么要用这个? 因为看论文和博客的时候很常见,不论是干嘛的,既然这么火,不妨试试. 如何安装 从网上爬数据下来 对数据进行过滤.分词 用word2vec进行近义词查找等操作 完整的工程传到了我的gi ...
- 转:java中Vector的使用
转:https://www.cnblogs.com/zhaoyan001/p/6077492.html Vector 可实现自动增长的对象数组. java.util.vector提供了向量类(vect ...
- MYSQL 面试查询系列问题
表结构: `student`('id'.'name'.'code'.'age'.'sex')学生表 `teacher`('id'.'name')教师表 `course`('id'.'name'.'te ...
- django Form组件 上传文件
上传文件 注意:FORM表单提交文件要有一个参数enctype="multipart/form-data" 普通上传: urls: url(r'^f1/',views.f1), u ...