3944: Sum

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 4930  Solved: 1313
[Submit][Status][Discuss]

Description

 

Input

一共T+1行
第1行为数据组数T(T<=10)
第2~T+1行每行一个非负整数N,代表一组询问
 

Output

一共T行,每行两个用空格分隔的数ans1,ans2
 

Sample Input

6
1
2
8
13
30
2333

Sample Output

1 1
2 0
22 -2
58 -3
278 -3
1655470 2
 
/*
就相当于111112222222333333333每个数都有相同的一坨,然后只算出一坨的第一个数,乘个他的次数,直接跳到下一坨
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#define maxn 5000005
#define N 5000000
using namespace std;
int p[maxn],mu[maxn],cnt;
long long phi[maxn];
bool vis[maxn];
void prepare(){
memset(vis,,sizeof(vis));
phi[]=;mu[]=;
for(int i=;i<=N;i++){
if(!vis[i])p[++cnt]=i,phi[i]=i-,mu[i]=-;
for(int j=;j<=cnt&&i*p[j]<=N;j++){
vis[i*p[j]]=;
if(i%p[j]==){
phi[i*p[j]]=phi[i]*p[j];
mu[p[j]*i]=;break;
}
phi[i*p[j]]=phi[i]*phi[p[j]];
mu[i*p[j]]=-mu[i];
}
}
for(int i=;i<=N;i++)phi[i]+=phi[i-],mu[i]+=mu[i-];
}
map<long long,long long>lst_phi;
map<long long,int>lst_mu;
long long sum_phi(long long n){
if(n<=N)return phi[n];
if(lst_phi[n]!=)return lst_phi[n];
long long res=n*(n+)/;
for(long long i=,nxt;i<=n;i=nxt+){
nxt=n/(n/i);
res-=sum_phi(n/i)*(nxt-i+);
}
return lst_phi[n]=res;
}
int sum_mu(long long n){
if(n<=N)return mu[n];
if(lst_mu[n]!=)return lst_mu[n];
int res=;
for(long long i=,nxt;i<=n;i=nxt+){
nxt=n/(n/i);
res-=sum_mu(n/i)*(nxt-i+);
}
return lst_mu[n]=res;
}
int main(){
freopen("Cola.txt","r",stdin);
prepare();
int Q;scanf("%d",&Q);
while(Q--){
int n;scanf("%d",&n);
cout<<sum_phi(n)<<' '<<sum_mu(n)<<endl;
}
}

bzoj 3944: Sum(杜教筛)的更多相关文章

  1. bzoj 3944 Sum —— 杜教筛

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3944 杜教筛入门题! 看博客:https://www.cnblogs.com/zjp-sha ...

  2. BZOJ 3944: Sum [杜教筛]

    3944: Sum 贴模板 总结见学习笔记(现在还没写23333) #include <iostream> #include <cstdio> #include <cst ...

  3. 3944: Sum[杜教筛]

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

  4. [BZOJ3944]Sum(杜教筛)

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

  5. 洛谷P4213 Sum(杜教筛)

    题目描述 给定一个正整数N(N\le2^{31}-1)N(N≤231−1) 求ans_1=\sum_{i=1}^n\phi(i),ans_2=\sum_{i=1}^n \mu(i)ans1​=∑i=1 ...

  6. [bzoj3944] sum [杜教筛模板]

    题面: 传送门 就是让你求$ \varphi\left(i\right) $以及$ \mu\left(i\right) $的前缀和 思路: 就是杜教筛的模板 我们把套路公式拿出来: $ g\left( ...

  7. bzoj3944: Sum 杜教筛板子题

    板子题(卡常) 也可能是用map太慢了 /************************************************************** Problem: 3944 Us ...

  8. ●杜教筛入门(BZOJ 3944 Sum)

    入门杜教筛啦. http://blog.csdn.net/skywalkert/article/details/50500009(好文!) 可以在$O(N^{\frac{2}{3}})或O(N^{\f ...

  9. bzoj 3944: Sum【莫比乌斯函数+欧拉函数+杜教筛】

    一道杜教筛的板子题. 两个都是积性函数,所以做法是一样的.以mu为例,设\( f(n)=\sum_{d|n}\mu(d) g(n)=\sum_{i=1}^{n}f(i) s(n)=\sum_{i=1} ...

随机推荐

  1. jQuery JS 入门记录

    1.类型转换 .toString() 转字符串 . parseInt() parseFloat() 强制转换 数字型(Number) 1.声明 var i = 1; var i = new Numbe ...

  2. 山东省第七届ACM省赛

    ID Title Hint A Julyed 无 B Fibonacci 打表 C Proxy 最短路径 D Swiss-system tournament 归并排序 E The Binding of ...

  3. 与STL文件相关的各类学习地址

    几个网址: 1.STL :https://en.wikipedia.org/wiki/STL_(file_format)#ASCII_STL 2.一个博客的文章地址: 三维图形数据格式 STL的 读取 ...

  4. BEC listen and translation exercise 31

    听力练习: All societies have ways of encouraging and enforcing what they view as appropriate behaviour w ...

  5. 如何查看myeclipse是否激活

    myEclipse---->Subscription information--->Subscription expiration date 看这个日期到什么时候!另外建议别用太高版本的M ...

  6. 9th

    2017-2018-2 20179212<网络攻防实践>第9周作业 视频学习 KaliSecurity压力测试工具 压力测试通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能够提供的 ...

  7. netsh wlan start hostednetwork

    常用的无线网命令: 一.开启系统承载网络模块和新建无线网络命令: netsh wlan set hostednetwork mode=allow ssid=wifi key=12345678说明:ss ...

  8. c++11中用_sntprintf代替_stprintf

    sprintf.swprintf 分别是对单字节/双字节字符格式化的,wsprintf根据预定义指示符的不同可以对单字节/双字节字符格式化. wsprintf和swprintf比较,其实这两个函数对用 ...

  9. debian软件安装和卸载

    用root身份执行如下命令: dpkg -l |grep "^rc"|awk '{print $2}' |xargs aptitude -y purge dpkg是Debian P ...

  10. Go和HTTPS

    转自:http://tonybai.com/2015/04/30/go-and-https/ 近期在构思一个产品,考虑到安全性的原因,可能需要使用到HTTPS协议以及双向数字证书校验.之前只是粗浅接触 ...