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})\)的时间复杂度内利用卷积求出一些积性函数的前缀和. 算法 ...
随机推荐
- iOS开发之Objective-C与JavaScript的交互
UIWebView是iOS最常用的SDK之一,它有一个stringByEvaluatingJavaScriptFromString方法可以将javascript嵌入页面中,通过这个方法我们可以在iOS ...
- labview与单片机串口通信
labview与单片机串口通信 VISA是虚拟仪器软件体系结构的缩写(即Virtual Instruments Software Architecture),实质上是一个I/O口软件库及其规范的总 ...
- TensorFlow-谷歌深度学习库 手把手教你如何使用谷歌深度学习云平台
自己的电脑跑cnn, rnn太慢? 还在为自己电脑没有好的gpu而苦恼? 程序一跑一俩天连睡觉也要开着电脑训练? 如果你有这些烦恼何不考虑考虑使用谷歌的云平台呢?注册之后即送300美元噢-下面我就来介 ...
- lua保存table到文件并从文件解析成table
require("json") result = { ["ip"]="192.168.0.177", ["date"]= ...
- Python扩展模块——selenium的使用(定位、下载文件等)
想全面的使用selenium可以下载<selenium 2自动化测试实战-基于Python语言>PDF的电子书看看 我使用到了简单的浏览器操作,下载文件等功能... 推荐使用firefox ...
- maven常见问题处理(3-2)maven打包时跳过测试的几个方法
运行mvn install时跳过Test方法一:<project> [...] <build> <plugins> <plugin> <group ...
- OAuth2.0学习(1-5)授权方式2-简化模式(implicit grant type)
授权方式2-简化模式(implicit grant type) 简化模式(implicit grant type)不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳过了"授 ...
- 如何设置eclipse 右键new的菜单
如何设置eclipse 右键new的菜单 在使用eclipse进行开发的时候,开发人员一般使用File-new来创建项目或文件,但常常发现,默认右键new选项里很多选项极少会用到,而一些常用的选项又没 ...
- netty学习--netty源码中的部分util方法
io.netty.buffer.AbstractByteBuf#calculateNewCapacity 申请内存空间 private int calculateNewCapacity(int mi ...
- 项目管理器 ProjectManager Beta 10 发布
本次更新内容: 可以设置主界面是否显示表格线 去除了开发日志界面的表格线,看起来好像好看一些 修复主界面时间显示的问题 自定义问候语 修复习惯统计记录时间显示错误的问题 修复创建项目时间错误问题 增加 ...