[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) ...
随机推荐
- JavaScript的大括号的语义
Javascript中大括号"{}"有四种语义作用: 语义1. 组织复合语句,这是最常见的: view source print? 1 if( condition ) { 2 ...
- ubuntu下使用sudo 出现unable to resolve host 解决方法
Linux 环境, 假设这台机器名字叫dev(机器的hostname), 每次执行sudo 就出现这个警告讯息:sudo: unable to resolve host dev虽然sudo 还是可以正 ...
- js删除一个父元素下面的所有子元素
比如<div id="ok"><button tpye='button'>111111</button><p>22222</p ...
- 打砖块(codevs 1257)
题目描述 Description 在一个凹槽中放置了n层砖块,最上面的一层有n块砖,第二层有n-1块,……最下面一层仅有一块砖.第i层的砖块从左至右编号为1,2,……i,第i层的第j块砖有一个价值a[ ...
- 将setter方法与itemClick: 进行类比
https://www.evernote.com/shard/s227/sh/a0c3afa3-8792-4756-8594-d2387a7f57ad/b561ff665af9ad401c8e ...
- 【洛谷 P1251】 餐巾计划问题 (费用流)
题目链接 我做的网络流24题里的第一题.. 想是不可能想到的,只能看题解. 首先,我们拆点,将一天拆成晚上和早上,每天晚上会受到脏餐巾(来源:当天早上用完的餐巾,在这道题中可理解为从原点获得),每天早 ...
- 【洛谷 P1896】[SCOI2005]互不侵犯(状压dp)
题目链接 题意:在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. 这是道状压\(DP\)好题啊.. ...
- NYOJ 38 布线问题 (最小生成树 prim)
题目链接 描述 南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件: 1.把所有的楼都供上电. 2.所用电线花费最少 输入 第一行是一个整数n表示有n组测 ...
- bzoj 1301 后缀数组
比较裸的后缀数组. /************************************************************** Problem: User: BLADEVIL La ...
- from表单详解