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})\)的时间复杂度内利用卷积求出一些积性函数的前缀和. 算法 ...
随机推荐
- [知识梳理]课本1&2.1-2.5
面向对象的语言 出发点:更直接地描述客观世界中存在的事物(对象)以及它们之间的关系. 特点: 是高级语言. 将客观事物看作具有属性和行为的对象. 通过抽象找出同一类对象的共同属性和行为,形成类. 通过 ...
- vue 在methods中调用mounted中的方法?
首先可以在data中先声明一个变量 比如 isShow=' ' mounted 中 ---> methods 中 ---> this.sureDelBox(item) 直接this调用 ...
- C语言Linix服务器网络爬虫项目(二)项目设计和通过一个http请求抓取网页的简单实现
我们通过上一篇了解了爬虫具体要实现的工作之后,我们分析得出的网络爬虫的基本工作流程如下: 1.首先选取一部分精心挑选的种子URL: 2.将这些URL放入待抓取URL队列: 3.从待抓取URL队列中取出 ...
- CURL学习总结(1)
1.curl是什么? 百度百科定义: curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Unix.多种Linux发行版中,并且有DOS和Win32.W ...
- python flask框架 tempates 模版的使用
在py文件同级下 建立templates文件夹,再文件夹中编写html文件 1 向模版中传递参数: ''' 1 向模板传送 参数 ''' @app.route('/') def index(): na ...
- RxJava系列2(基本概念及使用介绍)
RxJava系列1(简介) RxJava系列2(基本概念及使用介绍) RxJava系列3(转换操作符) RxJava系列4(过滤操作符) RxJava系列5(组合操作符) RxJava系列6(从微观角 ...
- jodatime 时间比较
public ArrayList<CalcPeriod> getCalcPeriods() { DateTime now = DateTime.now(); DateTime.Proper ...
- 如何解释vue的生命周期才能令面试官满意?
当面试官问:"谈谈你对vue的生命周期的理解",听到这句话你是不是心里暗自窃喜:这也太容易了吧,不就是beforeCreate.created.beforeMount.mounte ...
- SQL 语句 (二) --- SELECT
1 完整句法: SELECT [ ALL | DISTINCT TOP n [] WITH TIES select_list [INTO [new_table_name] ] [FROM {table ...
- 1114innodb的统计信息对optimizer成本预估影响实例 CARDINALITY
转自 https://www.cnblogs.com/olinux/p/5140615.html 转自 https://yq.aliyun.com/articles/174906?spm=5176 ...