题目传送门: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. Exception: java.io.FileNotFoundException: D:\Users\liuyangOS2237\Workspaces\MyEclipse%2010\Zhuce\WebRoot\WEB-INF\classes\users.xml (系统找不到指定的路径。解决

    com.exception.DaoException: java.io.FileNotFoundException: D:\Users\liuyangOS2237\Workspaces\MyEclip ...

  2. Caused by: java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut aaa

    这个错误是说,找不到这个注释: 解决方案: 1.更改自己本机的jdk版本(我的更改了无效): 在工程选择框内点击右键--->build path----->Library--->ad ...

  3. UVa 210 Concurrency Simulator (双端队列+模拟)

    题意:给定n个程序,每种程序有五种操作,分别为 var = constant(赋值),print var (打印), lock, unlock,end. 变量用小写字母表示,初始化为0,为程序所公有( ...

  4. UVa 111 History Grading (简单DP,LIS或LCS)

    题意:题意就是坑,看不大懂么,结果就做不对,如果看懂了就so easy了,给定n个事件,注意的是, 它给的是第i个事件发生在第多少位,并不是像我们想的,第i位是哪个事件,举个例子吧,4 2 3 1, ...

  5. 有关在 Word 中撰写博客的帮助

    目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...

  6. 配置 cxf-ws spring bean 文件

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  7. 用python做文本情感分析

    情感分析就是分析一句话说得是很主观还是客观描述,分析这句话表达的是积极的情绪还是消极的情绪.原理比如这么一句话:“这手机的画面极好,操作也比较流畅.不过拍照真的太烂了!系统也不好.” ① 情感词 要分 ...

  8. Oracle sql 优化の常用方式

    1.不要用 '*' 代替所有列名,特别是字段比较多的情况下 使用select * 可以列出某个表的所有列名,但是这样的写法对于Oracle来说会存在动态解析问题.Oracle系统通过查询数据字典将 ' ...

  9. Oracle SQL Trace 和 10046 事件

    http://blog.csdn.net/tianlesoftware/article/details/5857023 一. SQL_TRACE 当SQL语句出现性能问题时,我们可以用SQL_TRAC ...

  10. 动态载入DLL所需要的三个函数详解(LoadLibrary,GetProcAddress,FreeLibrary)

    动态载入 DLL 动态载入方式是指在编译之前并不知道将会调用哪些 DLL 函数, 完全是在运行过程中根据需要决定应调用哪些函数. 方法是:用 LoadLibrary 函数加载动态链接库到内存,用 Ge ...