题目描述

给定一个正整数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=1n​ϕ(i),ans2​=∑i=1n​μ(i)

输入输出格式

输入格式:

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

输出格式:

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

输入输出样例

输入样例#1: 复制

6
1
2
8
13
30
2333
输出样例#1: 复制

1 1
2 0
22 -2
58 -3
278 -3
1655470 2

裸的杜教筛

$\sum_{i=1}^{n}\varphi(i) = \frac{n\times(n+1)}{2} - \sum_{d=2}^{n}\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\varphi(i)$

$\sum_{i=1}^{n}\mu(i) = 1 - \sum_{d=2}^{n}\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\mu(i)$

然后直接暴力递归计算即可

#include<cstdio>
#include<map>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/hash_policy.hpp>
#define LL long long
using namespace std;
using namespace __gnu_pbds;
const int MAXN=;
int N,limit=,tot=,vis[MAXN],mu[MAXN],prime[MAXN];
LL phi[MAXN];
gp_hash_table<int,LL>Aphi,Amu;
void GetMuAndPhi()
{
vis[]=;phi[]=;mu[]=;
for(int i=;i<=limit;i++)
{
if(!vis[i]) prime[++tot]=i,phi[i]=i-,mu[i]=-;
for(int j=;j<=tot&&i*prime[j]<=limit;j++)
{
vis[i*prime[j]]=;
if(i%prime[j]==){mu[i*prime[j]]=; phi[i*prime[j]]=phi[i]*prime[j]; break;}
else {mu[i*prime[j]]=-mu[i]; phi[i*prime[j]]=phi[i]*(prime[j]-); }
}
}
for(int i=;i<=limit;i++) mu[i]+=mu[i-],phi[i]+=phi[i-];
}
LL SolvePhi(LL n)
{
if(n<=limit) return phi[n];
if(Aphi[n]) return Aphi[n];
LL tmp=n*(n+)/;
for(int i=,nxt;i<=n;i=nxt+)
nxt=min(n,n/(n/i)),
tmp-=SolvePhi(n/i)*(LL)(nxt-i+);
return Aphi[n]=tmp;
}
LL SolveMu(LL n)
{
if(n<=limit) return mu[n];
if(Amu[n]) return Amu[n];
LL tmp=;
for(int i=,nxt;i<=n;i=nxt+)
nxt=min(n,n/(n/i)),
tmp-=SolveMu(n/i)*(LL)(nxt-i+);
return Amu[n]=tmp;
}
int main()
{
GetMuAndPhi();
int QWQ;
scanf("%d",&QWQ);
while(QWQ--)
{
scanf("%lld",&N);
printf("%lld %lld\n",SolvePhi(N),SolveMu(N));
}
return ;
}

洛谷P4213 Sum(杜教筛)的更多相关文章

  1. 洛谷P4213(杜教筛)

    #include <bits/stdc++.h> using namespace std; typedef long long LL; const int maxn = 3e6 + 3; ...

  2. 3944: Sum[杜教筛]

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

  3. [BZOJ3944]Sum(杜教筛)

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

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

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

  5. bzoj 3944 Sum —— 杜教筛

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

  6. BZOJ 3944: Sum [杜教筛]

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

  7. bzoj3944: Sum 杜教筛板子题

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

  8. [洛谷P4213]【模板】杜教筛(Sum)

    题目大意:给你$n$,求:$$\sum\limits_{i=1}^n\varphi(i),\sum\limits_{i=1}^n\mu(i)$$最多$10$组数据,$n\leqslant2^{31}- ...

  9. 洛谷P3768 简单的数学题 【莫比乌斯反演 + 杜教筛】

    题目描述 求 \[\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{n} i*j*gcd(i,j) \pmod{p}\] \(n<=10^{10}\),\(p\) ...

随机推荐

  1. 图片处理服务 ImageMagick 的安装和使用

    简介 该文章使用目前官方最新版本7.0.8,这里只记录下Windows系统下的安装. 官方网站:http://www.imagemagick.org/script/index.php. ImageMa ...

  2. JDK设计模式之——责任链(Filter)

    责任链的设计模式可以参考Servlet的FilterChain.FilterChain中的每个Filter(过滤器)就像一个个的链条 web开发中 有时候需要对接口request和response进行 ...

  3. 一个简单的实例演示vuex模块化和命名空间

    因为Vuex Store是全局注册的,不利于较大的项目,引入模块分离业务状态和方法,引入命名空间解决不同模块内(getters,mutaions,actions)名称冲突的问题 ----------- ...

  4. ajax&bootstrap

    1.ajax 后台 # 通过flask框架搭建后台 from flask import flask,request # 创建一个服务器对象 app = Flask(__name__) # 解决ajax ...

  5. js控制多层单选,多选按钮,做隐藏操作

    项目中遇到多层级单选,多选按钮的置灰/隐藏操作.特意写了一个公用组件: //置灰方式 //controllerArr数组添加如下数据: //{ctrlName:"gds_anquanyuan ...

  6. 使用PageHepler分页

    首先需要引入依赖 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>p ...

  7. JSP内置对象的使用(一)

    JSP九大内置对象是:request.response.session.application.out.pagecontext.config.page.exception. JSP常用的内置对象是:o ...

  8. extends的使用

    继承extends的使用 继承(extends):           继承让我们可以更好的实现类的扩展.           继承的使用要点:               1.父类也称作超类.基类. ...

  9. java基础-2

    java基础-2 面向对象 定义 面向对象是一种思维方式,相对于面向过程​面向过程注重流程中的每一步,清楚流程中的每一个细节​面向对象注重的是对象,有了对象就有对象的一届​自己动手做--面向过程,找其 ...

  10. 如何优雅的关闭golang的channel

    How to Gracefully Close Channels,这篇博客讲了如何优雅的关闭channel的技巧,好好研读,收获良多. 众所周知,在golang中,关闭或者向已关闭的channel发送 ...