题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4916

第一个询问即求出$\sum_{i=1}^{n} { \mu (i^2)} $,考虑到$\mu$的定义,当i>1时必存在次数为偶数的质因子,故在数据范围内,$\sum_{i=1}^{n} { \mu (i^2)} $恒等于1。

第二个询问即求出$\sum_{i=1}^{n} { \varphi  (i^2)} $,考虑到$\varphi$的定义,则有$\varphi(i^2)=i\times \varphi(i)$。

问题转化为求$\sum_{i=1}^{n} { i\times \varphi  (i)} $

下面开始化简式子,考虑式子$n=\sum_{i|n}{\varphi (i)}$

通过简单变式,得:$n=\sum_{i|n\&i<n}{\varphi (i)}+\varphi (n)$

移项,得:$\varphi (n)=n-\sum_{i|n\&i<n}{\varphi (i)}$

通过之前推出的式子,得:$\mu(n^2)=n^2-n\times\sum_{i|n\&i<n}{\mu(i)}$

我们设$\Phi(n)=\sum_{i=1}^{n} { \varphi  (i^2)}$

则:

$\Phi(n)=\sum_{i=1}^{n} (i^2-i \times \sum_{j|i\&j<i}\varphi(j))$

$=\frac{n(n+1)(2n+1)}{6}-\sum_{i=1}^{n} i \times \sum_{j|i\&j<i}\varphi(j)$

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

$=\frac{n(n+1)(2n+1)}{6}-\sum_{i=2}^{n} i \times \Phi(\left \lfloor \frac{n}{i} \right \rfloor)$

然后用杜教筛的思路+预处理1~19260817的$i\times \mu (i)$的前缀和即可

 #include<bits/stdc++.h>
#define L long long
#define M 19260817
#define MOD 1000000007
#define inv6 166666668
using namespace std; int b[M]={},phi[M]={},use=; L pri[M]={};
void init(){
phi[]=;
for(int i=;i<M;i++){
if(!b[i]) pri[++use]=i,phi[i]=i-;
for(int j=;j<=use&&i*pri[j]<M;j++){
b[i*pri[j]]=;
if(i%pri[j]==) {phi[i*pri[j]]=phi[i]*pri[j]; break;}
phi[i*pri[j]]=phi[i]*(pri[j]-);
}
}
for(L i=;i<M;i++) phi[i]=(phi[i-]+phi[i]*i)%MOD;
} map<int,L> mp;
L solve(L n){
if(n<M) return phi[n];
if(mp[n]) return mp[n];
L pls=n*(n+)%MOD*(n<<|)%MOD*inv6%MOD,ans=;
for(L i=,j;i<=n;i=j+){
j=n/(n/i);
L sumi=((i+j)*(j-i+)/)%MOD;
ans=(ans+solve(n/i)%MOD*sumi)%MOD;
}
ans=(pls-ans+MOD)%MOD;
return mp[n]=ans;
} int main(){
init();
int n; scanf("%d",&n); printf("1\n");
printf("%lld\n",solve(n));
}

【BZOJ4916】神犇和蒟蒻 杜教筛的更多相关文章

  1. BZOJ4916: 神犇和蒟蒻(杜教筛)

    题意 求 $$\sum_{i = 1}^n \mu(i^2)$$ $$\sum_{i = 1}^n \phi(i^2)$$ $n \leqslant 10^9$ Sol zz的我看第一问看了10min ...

  2. [BZOJ4916]神犇和蒟蒻 杜教筛/Min_25筛

    题目大意: 给定\(n\le 10^9\),求: 1.\(\sum_{i=1}^n\mu(i^2)\) 2.\(\sum_{i=1}^n\varphi(i^2)\) 解释 1.\(\sum_{i=1} ...

  3. LG4213 【模板】杜教筛(Sum)和 BZOJ4916 神犇和蒟蒻

    P4213 [模板]杜教筛(Sum) 题目描述 给定一个正整数$N(N\le2^{31}-1)$ 求 $$ans_1=\sum_{i=1}^n\varphi(i)$$ $$ans_2=\sum_{i= ...

  4. BZOJ4916: 神犇和蒟蒻【杜教筛】

    Description 很久很久以前,有一只神犇叫yzy; 很久很久之后,有一只蒟蒻叫lty; Input 请你读入一个整数N;1<=N<=1E9,A.B模1E9+7; Output 请你 ...

  5. BZOJ4916 神犇和蒟蒻 【欧拉函数 + 杜教筛】

    题目 很久很久以前,有一只神犇叫yzy; 很久很久之后,有一只蒟蒻叫lty; 输入格式 请你读入一个整数N;1<=N<=1E9,A.B模1E9+7; 输出格式 请你输出一个整数A=\sum ...

  6. BZOJ4916 神犇和蒟蒻(欧拉函数+杜教筛)

    第一问是来搞笑的.由欧拉函数的计算公式容易发现φ(i2)=iφ(i).那么可以发现φ(n2)*id(n)(此处为卷积)=Σd*φ(d)*(n/d)=nΣφ(d)=n2 .这样就有了杜教筛所要求的容易算 ...

  7. Bzoj4916: 神犇和蒟蒻

    题面 传送门 Sol 第一问puts("1") 第二问,\(\varphi(i^2)=i\varphi(i)\) 设\(\phi(n)=\sum_{i=1}^{n}i\varphi ...

  8. 【BZOJ4916】神犇和蒟蒻(杜教筛)

    [BZOJ4916]神犇和蒟蒻(杜教筛) 题面 BZOJ 求 \[\sum_{i=1}^n\mu(i^2)\ \ 和\ \sum_{i=1}^n\phi(i^2)\] 其中\[n<=10^9\] ...

  9. 【BZOJ4916】神犇和蒟蒻 解题报告

    [BZOJ4916]神犇和蒟蒻 Description 很久很久以前,有一群神犇叫sk和ypl和ssr和hjh和hgr和gjs和yay和xj和zwl和dcx和lyy和dtz和hy和xfz和myh和yw ...

随机推荐

  1. Check time of different search methods

    https://github.com/Premiumlab/Python-for-Algorithms--Data-Structures--and-Interviews/blob/master/Moc ...

  2. 2018.09.10 bzoj1855: [Scoi2010]股票交易(单调队列优化dp)

    传送门 单调队列优化dp好题. 有一个很明显的状态设置是f[i][j]表示前i天完剩下了j分股票的最优值. 显然f[i][j]可以从f[i-w-1][k]转移过来. 方程很好推啊. 对于j<kj ...

  3. 2018.07.09 顺序对齐(线性dp)

    顺序对齐 题目描述 考虑两个字符串右对齐的最佳解法.例如,有一个右对齐方案中字符串是 AADDEFGGHC 和 ADCDEGH. AAD~DEFGGHC ADCDE~~GH~ 每一个数值匹配的位置值 ...

  4. Criteria查询

    1.Criteria表达式 Criteria c=session.createCriteria(User.class); List result=c.list(); Iterator it=resul ...

  5. 2014年誓言:干掉网页设计程序——Dreamweaver!

    2014年誓言:干掉网页设计程序——Dreamweaver! 阅读:  评论:  作者:Rybby  日期:  来源:rybby.com 2014年,我写下誓言,用自己设计的在线网页设计工具“拉拉变” ...

  6. 转:getContextPath、getServletPath、getRequestURI的区别

    假定你的web application 名称为news,你在浏览器中输入请求路径: http://localhost:8080/news/main/list.jsp 则执行下面向行代码后打印出如下结果 ...

  7. EBS R12 探索之路【EBS 经典SQL分享】

    http://bbs.erp100.com/thread-251217-1-1.html 1. 查询EBS 系统在线人数 SELECT U.USER_NAME ,APP.APPLICATION_SHO ...

  8. [leetcode] 15. Plus One

    这道题其实让我意识到了我的英文水平还有待加强.... 题目如下: Given a non-negative number represented as an array of digits, plus ...

  9. Android-上下文菜单Menu

    上一篇博客介绍了,Android-普通菜单Menu,而这篇博客介绍Android-上下文菜单Menu AndroidManifest.xml 中加入权限: <!-- 读取联系人数据的权限 --& ...

  10. matlab中使用正弦波合成方波(带动画)

    x=:*pi; :: s=; ::step s = s+/i*sin(i*x); end plot(s);set(figure(),'visible','off'); filename=[num2st ...