【BZOJ2226】LCM SUM,数论之一维LCM(莫比乌斯反演)
Time:2016.06.18
Author:xiaoyimi
转载注明出处谢谢
传送门
思路:
一开始的我只能推出一个O(n√⋅n√=n)O(\sqrt n·\sqrt n=n)的式子(两次分块),但是O(Tn)O(Tn)的复杂度对于这道题并不科学……
后来发现求n以内与n互质的数的和可以O(1)求o_O
神奇的反演……
∑ni=1lcm(i,n)\sum^n_{i=1}lcm(i,n)
=∑ni=1nigcd(i,n)=\sum^n_{i=1}\frac{ni}{gcd(i,n)}
=∑ni=1∑nd=1ni[gcd(i,n)=d]d=\sum^n_{i=1}\sum^n_{d=1}\frac{ni[gcd(i,n)=d]}d
=∑ni=1∑nd=1[d|i][d|n]ni[gcd(id,nd)=1]d=\sum^n_{i=1}\sum^n_{d=1}[d|i][d|n]\frac{ni[gcd(\frac id,\frac nd)=1]}d
=∑nd=1∑ndi=1[d|n][gcd(i,nd)=1]i⋅n=\sum^n_{d=1}\sum^\frac nd_{i=1}[d|n][gcd(i,\frac nd)=1]i·n
=∑nd=1[d|n]n⋅f(nd)=\sum^n_{d=1}[d|n]n·f(\frac nd)
其中f(n)f(n)
=∑ni=1[gcd(i,n)=1]i=\sum^n_{i=1}[gcd(i,n)=1]i
=∑ni=1i∑nd=1[d|i][d|n]μ(d)=\sum^n_{i=1}i\sum^n_{d=1}[d|i][d|n]μ(d)
=∑nd=1[d|n]μ(d)⋅d∑ndi=1i=\sum^n_{d=1}[d|n]μ(d)·d\sum^\frac nd_{i=1}i
=∑nd=1[d|n]μ(d)⋅d⋅(nd+1)⋅nd/2=\sum^n_{d=1}[d|n]μ(d)·d·(\frac nd+1)·\frac nd/2
=∑nd=1[d|n]μ(d)⋅n⋅(nd+1)/2=\sum^n_{d=1}[d|n]μ(d)·n·(\frac nd+1)/2
通过φ=μ×id,e=μ×1φ=μ×id,e=μ×1
=n2(φ(n)+e(n))=\frac n2(φ(n)+e(n))
代码:
#include<cstdio>
#include<iostream>
#define M 1000004
#define LL long long
using namespace std;
int n,T;
int prime[M>>2],phi[M];
bool vis[M];
LL ans;
int in()
{int t=0;char ch=getchar();while (ch>'9'||ch<'0') ch=getchar();while (ch>='0'&&ch<='9') t=(t<<3)+(t<<1)+ch-48,ch=getchar();return t;
}
LL cal(int n){return (LL)n*(phi[n]+(n==1))/2;}
main()
{for (int i=2;i<=M-4;i++){if (!vis[i])prime[++prime[0]]=i,phi[i]=i-1;for (int j=1;j<=prime[0];j++)if (i*prime[j]>M-4) break;else{vis[i*prime[j]]=1;phi[i*prime[j]]=phi[i]*(prime[j]-(i%prime[j]!=0));if (i%prime[j]==0) break;}}phi[1]=1;for (T=in();T;T--){n=in();ans=0;for (int d=1;d*d<=n;d++)if (n%d==0){ans+=cal(n/d);if (d*d<n) ans+=cal(d);}printf("%lld\n",ans*n);}
}
【BZOJ2226】LCM SUM,数论之一维LCM(莫比乌斯反演)相关推荐
- nssl1232-函数【数论,欧拉函数,莫比乌斯反演】
正题 题目大意 ∑d∣nf(d)=n\sum_{d|n}f(d)=nd∣n∑f(d)=n 对于n个aia_iai 求 ∑i=1nf(ai)\sum_{i=1}^nf(a_i)i=1∑nf(ai ...
- 【莫比乌斯反演】[HYSBZ/BZOJ2693]jzptab
题目大意就是求∑ni=1∑mj=1lcm(i,j),但是有多组输入数据. 如果之前做过[莫比乌斯反演][HYSBZ\BZOJ2154]Crash的数字表格,就会发现,对于每一个询问,有O(n)的做法, ...
- 【BZOJ2154】Crash的数字表格,数论练习之二维LCM(莫比乌斯反演)
Time:2016.06.18 Author:xiaoyimi 转载注明出处谢谢 看不见的分割线 传送门 思路: 设n≤m ∑i=1n∑j=1mlcm(i,j)\displaystyle \sum^n ...
- 【bzoj2694】Lcm 莫比乌斯反演+线性筛
题目描述 求$\sum\limits_{i=1}^n\sum\limits_{j=1}^m|\mu(gcd(i,j))|lcm(i,j)$,即$gcd(i,j)$不存在平方因子的$lcm(i,j)$之 ...
- SP5971 LCMSUM - LCM Sum
SP5971 LCMSUM - LCM Sum 思路 ∑i=1nlcm(i,n)\sum_{i = 1}^{n}lcm(i, n)i=1∑nlcm(i,n) =>∑i=1ningcd(i,n) ...
- SPOJ 5971 lcm sum
题目链接:https://www.spoj.pl/problems/LCMSUM/ SPOJ Problem Set (classical) 5971. LCM Sum Problem code: L ...
- Orac and LCM(数论)
题目链接: Orac and LCM 大致题意: 给你一个长度为 n 的数组,求 gcd {lcm({ai , aj}) | i < j} 解题思路: gcd1=gcd[lcm(a1,a2),l ...
- 【数论+莫比乌斯反演】Exclusive Multiplication | gym103688E
[数论+莫比乌斯反演]Exclusive Multiplication | gym103688 前言 题意 思路 代码 前言 [ f ( x ) ] [f(x)] [f(x)] 表示艾弗森括号,若 f ...
- P6271 [湖北省队互测2014]一个人的数论(莫比乌斯反演,拉格朗日插值)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P6271 [湖北省队互测2014]一个人的数论(莫比乌斯反演,拉格朗日插值) Problem Sol ...
最新文章
- gis影像格式img转为ecw_微图影像地图导出拼接大图的参数说明
- C++ 十大经典排序算法原理及模板之STL方法实现以及稳定性分析
- python 操作mongo
- vue中v-for指令的使用之Vue知识点归纳(八)
- linux下安装nginx的采坑记录
- 模型保存的方法-----保存整个模型
- Kepware软件使用手册
- 深度时空3D卷积神经网络用于交通预测
- java: 找不到符号
- 用 Mac 输入罗马数字
- 数值计算和SVM讲解(下)
- 小网站云服务器配置推荐,小网站云服务器配置推荐
- matlab 黄金分析,matlab黄金分割法求解
- vmbox设置ubuntu共享文件夹_为什么共享文件夹、打印机访问还是受限?这几个设置解决90%问题...
- 自学 java如何入门?
- Android Telephony
- IT男需要学习文哲史
- 三本计算机的专业需要考研嘛,三本计算机考研难吗
- 基于51单片机的水温水流量检测/智能水龙头控制系统proteus仿真原理图PCB
- Java中夏令时问题
热门文章
- 程序猿必备!最简单的颈椎操
- 玩游戏提示计算机性能过低,如果玩游戏的fps低怎么办?八个问题和九个解决方案...
- java sql2005驱动_java.sql.SQLException:找不到适用于jdbc:microsoft:sqlserver的驱动程序...
- 社交网络图中结点的“重要性”计算
- 用mplfinance库定制A股常用的K线、均线图
- c++第二次上机实验项目二
- PHP PDO连接PostgreSQL报错 SCRAM authentication requires libpq version 10 or above in解决
- ES6语法---const和symbol
- wifi android手机版下载地址,手机随身wifi下载-手机随身WiFi 安卓版v1.6.3-PC6安卓网...
- mysql读写分离-借助中间键mycat