[BZOJ2226]LCMSum
转化一下,$\sum\limits_{i=1}^n[i,n]=n\sum\limits_{i=1}^n\dfrac i{(i,n)}$
枚举$d=(i,n)$,上式变为$n\sum\limits_{d=1}^n\sum\limits_{i=1}^n[(i,n)=d]\dfrac id=n\sum\limits_{d|n}\sum\limits_{i=1}^{\frac nd}\left[\left(i,\dfrac nd\right)=1\right]i$
设$f(n)=\sum\limits_{i=1}^n[(i,n)=1]i$,即互质数和
$$\begin{align*}f(n)&=\sum\limits_{i=1}^ni\sum\limits_{d|(i,n)}\mu(d)\\&=\sum\limits_{d|n}\mu(d)\sum\limits_{\substack{d|i\\i\leq n}}i\\&=\sum\limits_{d|n}d\mu(d)\sum\limits_{i=1}^{\frac nd}i\\&=\dfrac n2\sum\limits_{d|n}\mu(d)\left(\dfrac nd+1\right)\\&=\dfrac n2\left([n=1]+\sum\limits_{d|n}\mu(d)\dfrac nd\right)\\&=\dfrac n2\left([n=1]+\varphi(n)\right)\end{align*}$$
最后一步转变的依据可以用$n=\sum\limits_{d|n}\varphi(d)$反演得到
于是我们可以$O(1)$算$f(n)$了,原式变成$n\sum\limits_{d|n}f\left(\dfrac nd\right)=n\sum\limits_{d|n}f(d)$,$O(\sqrt n)$枚举约数就好了
#include<stdio.h>
#define ll long long
#define T 1000000
int phi[1000010],pr[1000010];
bool np[1000010];
void sieve(){
int i,j,m=0;
np[1]=1;
phi[1]=1;
for(i=2;i<=T;i++){
if(!np[i]){
m++;
pr[m]=i;
phi[i]=i-1;
}
for(j=1;j<=m;j++){
if(pr[j]*(ll)i>T)break;
np[i*pr[j]]=1;
if(i%pr[j]==0){
phi[i*pr[j]]=phi[i]*pr[j];
break;
}else
phi[i*pr[j]]=phi[i]*(pr[j]-1);
}
}
}
ll f(int n){return(phi[n]+(n==1))*(ll)n/2;}
int main(){
sieve();
int t,i,n;
ll s;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
s=0;
for(i=1;i*i<=n;i++){
if(n%i==0){
s+=f(n/i);
if(i*i<n)s+=f(i);
}
}
printf("%lld\n",n*s);
}
}
[BZOJ2226]LCMSum的更多相关文章
- BZOJ2226:LCMSum(欧拉函数)
Description Given n, calculate the sum LCM(1,n) + LCM(2,n) + .. + LCM(n,n), where LCM(i,n) denotes t ...
- [BZOJ2226][SPOJ5971]LCMSum(莫比乌斯反演)
2226: [Spoj 5971] LCMSum Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 1949 Solved: 852[Submit][S ...
- 【BZOJ2226】[Spoj 5971] LCMSum 莫比乌斯反演(欧拉函数?)
[BZOJ2226][Spoj 5971] LCMSum Description Given n, calculate the sum LCM(1,n) + LCM(2,n) + .. + LCM(n ...
- BZOJ2226: [Spoj 5971] LCMSum
题解: 考虑枚举gcd,然后问题转化为求<=n且与n互质的数的和. 这是有公式的f[i]=phi[i]*i/2 然后卡一卡时就可以过了. 代码: #include<cstdio> # ...
- BZOJ2226 & SPOJ5971:LCMSum——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=2226 题目大意:给定一个n,求lcm(1,n)+lcm(2,n)+……+lcm(n,n). ———— ...
- 【bzoj2226】[Spoj 5971] LCMSum 欧拉函数
题目描述 Given n, calculate the sum LCM(1,n) + LCM(2,n) + .. + LCM(n,n), where LCM(i,n) denotes the Leas ...
- BZOJ2226:[SPOJ5971]LCMSum
Description Given n, calculate the sum LCM(1,n) + LCM(2,n) + .. + LCM(n,n), where LCM(i,n) denotes t ...
- [bzoj2226][Spoj5971]LCMSum_欧拉函数_线性筛
LCMSum bzoj-2226 Spoj-5971 题目大意:求$\sum\limits_{i=1}^nlcm(i,n)$ 注释:$1\le n\le 10^6$,$1\le cases \le 3 ...
- spoj LCMSUM sigma(lcm(i,n));
Problem code: LCMSUM Given n, calculate the sum LCM(1,n) + LCM(2,n) + .. + LCM(n,n), where LCM(i,n) ...
随机推荐
- 修改innodb_flush_log_at_trx_commit参数提升insert性能
最近,在一个系统的慢查询日志里发现有个insert操作很慢,达到秒级,并且是比较简单的SQL语句,把语句拿出来到mysql中直接执行,速度却很快. 这种问题一般不是SQL语句本身的问题,而是在具体的应 ...
- Codeforces Round #525 (Div. 2)B. Ehab and subtraction
B. Ehab and subtraction 题目链接:https://codeforc.es/contest/1088/problem/B 题意: 给出n个数,给出k次操作,然后每次操作把所有数减 ...
- CRM系统主要业务流程思维导图
[CRM五策略] ❶对客户进行分类,不是根据规模,而是根据和你的关系,越细腻越好: ❷不定期更新客户资料,信息越全面越好: ❸主动对客户进行 ...
- idea xml 绿背景色 去掉拼写检查
去掉背景色 去掉拼写检查
- input 只允许输入数字
onkeyup='this.value=this.value.replace(/[^0-9\-]/gi,"")'
- win7下用U盘装ubuntu双系统 安装完后进入ubuntu黑屏光标问题
背景:原有win7系统,电脑中有ssd固态硬盘和电脑自带硬盘,win7是装在ssd盘上的 U盘安装ubuntu:已有之前保存的ubunbu镜像文件.iso U盘一块至少1G(我的是4G),将U盘资料备 ...
- im4java学习----查看文档和test用例
im4java下载地址:http://sourceforge.net/projects/im4java/files/(谷歌搜索出来的第一个官方地址打不开) 我们需要下载bin和src 这2个压缩包. ...
- 设置查看java的源程序
1.点 “window”-> "Preferences" -> "Java" -> "Installed JRES" 2. ...
- RPC-整体概念
RPC概述 RPC(Remote Procedure Call),即远程过程调用,是一种通过网络从远程计算机程序上请求服务而不需要了解底层网络技术的协议,实现调用远程主机上的方法就像调用本地方法一样. ...
- 使用vs2010编辑Unity脚本,配置方法
在Unity界面上.选择Edit->Preferences->External Tools,External Script Editor一项即为编译器. 以Unity3D 4.3.4 f1 ...