数论题不多BB,直接开始推导吧:

\(\sum_{i=1}^n \sum_{j=1}^n \phi(gcd(i,j))\)

\(=\sum_{i=1}^n \sum_{j=1}^n \sum_{d=1}^n [gcd(i,j)=d]\phi(d)\)

\(=\sum_{d=1}^n \phi(d)\cdot(\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor} \sum_{j=1}^{\lfloor\frac{n}{d}\rfloor} [gcd(i,j)=1])\)

然后\(\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor} \sum_{j=1}^{\lfloor\frac{n}{d}\rfloor} [gcd(i,j)=1]=2\cdot\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor} \phi(i) -1\),这个也是一个比较常用的结论了吧。具体可以看Luogu P2568 GCD的推导,之后为了方便,我们记\(sum_x=\sum_{i=1}^x \phi(i)\)

则上式\(=\sum_{d=1}^n(\phi(d)\cdot (2\cdot sum_{\lfloor\frac{n}{d}\rfloor}-1))\)

\(=2\cdot \sum_{d=1}^n(\phi(d)\cdot sum_{\lfloor\frac{n}{d}\rfloor})-sum_n\)

接下来就好做了,我们先把欧拉函数求前缀和,然后对于询问除法分块处理不同的\(sum_{\lfloor\frac{n}{d}\rfloor}\)即可。

复杂度\(O(n+T\sqrt n)\),轻松跑过

CODE

#include<cstdio>
#define RI register int
using namespace std;
const int P=1e7;
int prime[P+5],phi[P+5],cnt,n,t; long long ans,sum[P+5]; bool vis[P+5];
inline void resolve(void)
{
vis[1]=sum[1]=phi[1]=1; for (RI i=2;i<=P;++i)
{
if (!vis[i]) prime[++cnt]=i,phi[i]=i-1;
for (RI j=1;j<=cnt&&i*prime[j]<=P;++j)
{
vis[i*prime[j]]=1; if (i%prime[j]) phi[i*prime[j]]=phi[i]*(prime[j]-1);
else { phi[i*prime[j]]=phi[i]*prime[j]; break; }
}
sum[i]=sum[i-1]+phi[i];
}
}
int main()
{
for (scanf("%d",&t),resolve();t;--t)
{
scanf("%d",&n); ans=0; RI i,l,r;
for (l=1;l<=n;l=r+1) r=n/(n/l),ans+=sum[n/l]*(sum[r]-sum[l-1]);
printf("%lld\n",(ans<<1)-sum[n]);
}
return 0;
}

BZOJ 4804: 欧拉心算的更多相关文章

  1. bzoj 4804 欧拉心算 欧拉函数,莫比乌斯

    欧拉心算 Time Limit: 15 Sec  Memory Limit: 256 MBSubmit: 408  Solved: 244[Submit][Status][Discuss] Descr ...

  2. BZOJ 4804: 欧拉心算 欧拉函数

    Description 给出一个数字N Input 第一行为一个正整数T,表示数据组数. 接下来T行为询问,每行包含一个正整数N. T<=5000,N<=10^7 题解: 求 $\sum_ ...

  3. BZOJ_4804_欧拉心算_欧拉函数

    BZOJ_4804_欧拉心算_欧拉函数 Description 给出一个数字N Input 第一行为一个正整数T,表示数据组数. 接下来T行为询问,每行包含一个正整数N. T<=5000,N&l ...

  4. 【bzoj4804】欧拉心算 解题报告

    [bzoj4804]欧拉心算 Description 给出一个数字\(N\),计算 \[\sum_{i=1}^n\sum_{j=1}^n \varphi(\gcd(i,j))\] Input 第一行为 ...

  5. 【BZOJ4804】欧拉心算 莫比乌斯反演+线性筛

    [BZOJ4804]欧拉心算 Description 给出一个数字N Input 第一行为一个正整数T,表示数据组数. 接下来T行为询问,每行包含一个正整数N. T<=5000,N<=10 ...

  6. [BZOJ]4805: 欧拉函数求和

    解题思路类似莫比乌斯函数之和 题目大意:求[1,n]内的欧拉函数$\varphi$之和.($n<=2*10^{9}$) 思路:令$ M(n)=\sum_{i=1}^{n}\varphi (i)  ...

  7. BZOJ 4802 欧拉函数

    4802: 欧拉函数 Description 已知N,求phi(N) Input 正整数N.N<=10^18 Output 输出phi(N) Sample Input 8 Sample Outp ...

  8. BZOJ 4802 欧拉函数(Pollard_Rho)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4802 [题目大意] 已知N,求phi(N),N<=10^18 [题解] 我们用P ...

  9. 【bzoj4804】欧拉心算 莫比乌斯反演+莫比乌斯函数性质+线性筛

    Description 给出一个数字N 求\(\sum_{i=1}^{n}\sum_{j=1}^{n}\varphi(gcd(i,j))\) Input 第一行为一个正整数T,表示数据组数. 接下来T ...

随机推荐

  1. U8 应付款管理 单据类型 分析

    Ap_CloseBill   收付款单主表 Ap_CloseBills 收付款单子表 cVouchType 在收付款单主表中  ,用于区分单据为收款单还是付款单(48,49)  49:付款单 48:收 ...

  2. mysql的高级特性-存储过程

    定义: 存储例程是存储在数据库服务器中的一组sql语句,通过在查询中调用一个指定的名称来执行这些sql语句命令. 语法: DELIMITER // 声明语句结束符,用于区分; CEATE PROCED ...

  3. (网页)angularjs中的验证input输入框只能输入数字和小数点

    百度的资料:自己记录看下 把js的验证方法改成angular可使用的方法 AngularJS文件的写法: $scope.clearNoNum = function(obj,attr){ //先把非数字 ...

  4. [20180630]truncate table的另类恢复2.txt

    [20180630]truncate table的另类恢复2.txt --//上个星期做了truncate table的另类恢复,通过修改数据块的段号,再通过rowid定位收集数据,达到修复的目的.- ...

  5. Access删除某一字段重复的数据但是要保留一条

    如下图所示,Checktime这个字段有很多重复数据,我需要把所有Checktime这个字段重复的都删掉,但是还需要保留一条: 在Access做删除查询怎么做呀,来个Access高手,复制粘贴党请手下 ...

  6. contains方法

    contains方法,表示判断是否有当前字符串,有为true,没有为false; String str ="今天的菜谱有:QQ,当地,单独,方法,额额,混合,存储,最终,看看."; ...

  7. Linux 装机必备工具

    linux 装机必备工具:安装这些基本能满足日常需求. #!/usr/bin/env sh   echo "Env"       # vim   # tmux   # ssh   ...

  8. Linux 小知识翻译 - 目录 (完结)

    偶尔在网上看到的这篇文章,总结了linux中一些天天在说的概念.可能是因为天天说的关系, 一直以为自己知道这些概念.其实对有些概念也只是似是而非的了解而已. 为此,决定将所有的小知识点全翻译下来,给自 ...

  9. python分包写入文件,写入固定字节内容,当包达到指定大小时继续写入新文件

    第6行通过 for 循环控制生成 .log 文件的数量 第8行,如果该文件存在时先进行清空,然后再进行写入操作 第13行,将文件大小的单位转为MB 第14行,如果文件大小超过1MB时,跳出当前循环,重 ...

  10. <20180930>故障解决记录Cisco RV系列低端路由

    故障描述: 今日网络瘫痪 , 浏览器提示报 DNS出错, 故障现象: 网关能正常分配到IP但内网机器却无法上网. 其中一个WiFi设备竟然还可以通讯(聊天工具)! 故障思路和排查: 1.1 怀疑是上次 ...