Description

给出一个数字N

Input

第一行为一个正整数T,表示数据组数。
接下来T行为询问,每行包含一个正整数N。
T<=5000,N<=10^7
题解: 求 $\sum_{i=1}^{n}\sum_{j=1}^{n}\varphi(gcd(i,j))$
 
$=\sum_{d=1}^{n}\varphi(d)\sum_{i=1}^{n}\sum_{j=1}^{n}[gcd(i,j)==d]$
 
$=\sum_{d=1}^{n}\varphi(d)\sum_{i=1}^{\frac{n}{d}}\sum_{j=1}^{\frac{n}{d}}[gcd(i,j)==1]$
 
其中 $\sum_{i=1}^{n}\sum_{j=1}^{n}[gcd(i,j)==1]=2\times\sum_{i=1}^{n}\varphi(i)-1$
 
可以用数形结合来思考:
 
$\sum_{i=1}^{n}\sum_{j=1}^{i}[gcd(i,j)==1]=\sum_{i=1}^{n}\varphi(i)$
 
这个式子可以看作是对角线一半的欧拉函数值(以 $i$ 为横坐标,$j$ 为纵坐标)
 
而 $\sum_{i=1}^{n}\sum_{j=1}^{n}[gcd(i,j)==1]$ 正好是对角线折叠过去的结果.
 
不过还要减去 $(1,1)$ 多出来的贡献(只有 $1$ 是和自己本身互质的数)
 
令 $Sum(n)=\sum_{i=1}^{n}\varphi(i)$
 
答案为 $\sum_{d=1}^{n}\varphi(d)\sum_{i=1}^{\frac{n}{d}}\sum_{j=1}^{\frac{n}{d}}[gcd(i,j)==1]$
 
$\Rightarrow\sum_{d=1}^{n}\varphi(d)\times(2\times\sum_{i=1}^{\frac{n}{d}}\varphi(i)-1)$
 
$\Rightarrow\sum_{d=1}^{n}\varphi(d)\times(2\times Sum(\frac{n}{d})-1)$
 
$\Rightarrow2\times\sum_{d=1}^{n}\varphi(d)Sum(\frac{n}{d})-Sum(n)$
 
提前与处理一下欧拉函数前缀和即可.
#include<bits/stdc++.h>
#define maxn 10000003
#define M 10000000
#define ll long long
using namespace std;
void setIO(string s)
{
string in=s+".in";
freopen(in.c_str(),"r",stdin);
}
int cnt;
bool vis[maxn];
int prime[maxn], phi[maxn];
ll sumv[maxn];
inline void Linear_shaker()
{
phi[1]=1;
int i,j;
for(i=2;i<=M;++i)
{
if(!vis[i]) prime[++cnt]=i, phi[i]=i-1;
for(j=1;j<=cnt&&1ll*i*prime[j]<=M;++j)
{
vis[i*prime[j]]=1;
if(i%prime[j]==0)
{
phi[i*prime[j]]=phi[i]*prime[j];
break;
}
phi[i*prime[j]]=phi[i]*(prime[j]-1);
}
}
for(i=1;i<=M;++i) sumv[i]=sumv[i-1]+phi[i];
}
inline void solve()
{
int n,i,j;
scanf("%d",&n);
ll re=0;
for(i=1;i<=n;i=j+1)
{
j=(n/(n/i));
re+=(sumv[j]-sumv[i-1])*(sumv[n/i]*2-1);
}
printf("%lld\n",re);
}
int main()
{
// setIO("input");
Linear_shaker();
int T;
scanf("%d",&T);
while(T--) solve();
return 0;
}

  

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

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

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

  2. 【bzoj4804】欧拉心算 欧拉函数

    题目描述 给出一个数字N 输入 第一行为一个正整数T,表示数据组数. 接下来T行为询问,每行包含一个正整数N. T<=5000,N<=10^7 输出 按读入顺序输出答案. 样例输入 1 1 ...

  3. bzoj4804: 欧拉心算 欧拉筛

    题意:求\(\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)== ...

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

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

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

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

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

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

  7. 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载

    title: 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载 tags: -RecyclerView,下拉刷新,上拉加载更多 grammar_cjkRuby: true - ...

  8. iscroll.js 下拉刷新和上拉加载

    html代码如下 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...

  9. IOS 开发下拉刷新和上拉加载更多

    IOS 开发下拉刷新和上拉加载更多 简介 1.常用的下拉刷新的实现方式 (1)UIRefreshControl (2)EGOTTableViewrefresh (3)AH3DPullRefresh ( ...

随机推荐

  1. PANIC: Missing emulator engine program for ‘x86’ CPU.

    参考链接:https://zhidao.baidu.com/question/652153765084187325.html 解决方案:看图最上面路径,进入你的文件夹下,把红文件夹 ( 1 ) 中的所 ...

  2. VMware 虚拟化编程(14) — VDDK 的高级传输模式详解

    目录 目录 前文列表 虚拟磁盘数据的传输方式 Transport Methods Local File Access NBD and NBDSSL Transport SAN Transport Ho ...

  3. Week13 - 376. Wiggle Subsequence

    Week13 - 376. Wiggle Subsequence A sequence of numbers is called a wiggle sequence if the difference ...

  4. javaScript 递归 闭包 私有变量

    递归 递归的概念 在程序中函数直接或者间接调用自己. 跳出结构,有了跳出才有结果. 递归的思想 递归的调用,最终还是要转换为自己这个函数.    应用 function sum(n){ if(n == ...

  5. 【ABAP系列】SAP ABAP的事件执行顺序

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP的事件执行顺序 ...

  6. log记录日志使用说明

    一. 想要让Log4net日志(以下称日志)按每月自动归类为一个文件夹,为此,学习和修改了log4net.config文件.查了资料,重点是以下这些参数: <param name="F ...

  7. oracle--少见操作、如何调整dos窗口大小、字符集设置

    如何调整dos窗口大小 1.set linesize 400; 2.右键 --默认值 断开.连接 disconn ; conn ww/ww; 关于字符集 操作系统环境变量针对语言项设置有几个,我经常设 ...

  8. 红黑树插入操作---以JDK 源码为例

    红黑树遵循的条件: 1.根节点为黑色. 2.外部节点(叶子节点)为黑色. 3.红色节点的孩子节点为黑色.(由此,红色节点的父节点也必为黑色) 4.从根节点到任一外部节点的路径上,黑节点的数量相同. 节 ...

  9. 6、 逻辑回归(Logistic Regression)

    6.1 分类问题 在分类问题中,你要预测的变量

  10. 问题 H: 小k的简单问题

    问题 H: 小k的简单问题 时间限制: 1 Sec  内存限制: 128 MB提交: 107  解决: 57[提交] [状态] [命题人:jsu_admin] 题目描述 地图上有n个村庄,小k每个月需 ...