来自FallDream的博客,未经允许,请勿转载,谢谢。

------------------------------------------------------------------------------------------

题意:求$$\sum_{i=1}^{n}\sum_{j=1}^{n}lcm(i,j)   \\\    n\leqslant 10^{10}$$

题解:题目即求$$\sum_{i=1}^{n}\sum_{j=1}^{n}\frac{i*j}{gcd(i,j)}$$

$$=\sum_{d=1}^{n}d*\sum_{i=1}^{\lfloor n/d\rfloor}\sum_{j=1}^{\lfloor n/d\rfloor}i*j*[gcd(i,j)=1]$$

已知$$\sum_{i=1}^{n}i*[gcd(i,n)=1]=\frac{n*\varphi(n)}{2}$$

所以所求即为$$\sum_{d=1}^{n}d*\sum_{i=1}^{\lfloor n/d\rfloor}i*i*\varphi(i)$$

$\lfloor\frac{n}{d}\rfloor$只有$\sqrt(n)$种取值,那么我们考虑快速求出$g(i)=i^{2}*\varphi(i)$的前缀和$S(i)$。

$$\sum_{n|d}\varphi(d)=n$$

$$\sum_{i=1}^{n}\sum_{d|n}\varphi(d)=\frac{n(n+1)}{2}$$

$$\sum_{i=1}^{n}\sum_{d|n}\varphi(d)*i^{2}=\frac{n^{2}*(n+1)^{2}}{4}$$

$$\sum_{i=1}^{n}\sum_{d|n}g(d)*(\frac{i}{d})^{2}=\frac{n^{2}*(n+1)^{2}}{4}$$

$$\sum_{i=1}^{n}\sum_{d=1}^{\lfloor n/i\rfloor}g(d)*i^{2}=\frac{n^{2}*(n+1)^{2}}{4}$$

$$S(i)=\frac{n^{2}*(n+1)^{2}}{4}-\sum_{i=2}^{n}i^{2}*S(\lfloor n/i\rfloor)$$

这个可以在$O\left(n^{\frac{2}{3}}\right)$时间内做完。此题得解。

-------------------------------------------------------------------

我好菜啊,推了好久.....

-----

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<map>
#define MAXN 5000000
#define ll long long
#define mod 1000000007
#define ditoly 6666666
#define inv2 500000004
#define inv4 250000002
#define inv6 166666668
using namespace std;
inline ll read()
{
ll x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-') f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-''; ch=getchar();}
return x*f;
} struct mymap{
ll x,ans;int next;
}e[];
ll phi[MAXN+],n,ans=;
int s[MAXN/],num=,head[ditoly+];
bool b[MAXN+]; inline ll getcube(ll x){x%=mod;return x*(x+)%mod*(x<<|)%mod*inv6%mod;} inline void ins(ll x,ll sum)
{
int j=x%ditoly;
e[++num]=(mymap){x,sum,head[j]};head[j]=num;
} inline ll getsq(ll x){x%=mod;x=x*(x+)%mod;return x*x%mod*inv4%mod;} ll calc(ll x)
{
if(x<=MAXN)return phi[x];
for(int i=head[x%ditoly];i;i=e[i].next)
if(e[i].x==x)return e[i].ans;
ll last,sum=getsq(x);
for(ll i=;i<=x;i=last+)
{
last=x/(x/i);
sum-=(getcube(last)-getcube(i-)+mod)%mod*calc(x/i)%mod;
while(sum<)sum+=mod;
}
ins(x,sum);
return sum;
} int main()
{
n=read();phi[]=;
for(int i=;i<=MAXN;i++)
{
if(!b[i]) phi[i]=i-,s[++num]=i;
for(int j=;s[j]*i<=MAXN;j++)
{
b[s[j]*i]=;
if(i%s[j]==){phi[s[j]*i]=phi[i]*s[j];break;}
phi[s[j]*i]=phi[i]*(s[j]-);
}
}num=;
for(int i=;i<=MAXN;i++)
phi[i]=(phi[i-]+1LL*i*i%mod*phi[i]%mod)%mod;
for(ll i=,last;i<=n;i=last+)
{
last=n/(n/i);ll x=(n/i)%mod;
ans+=x*(x+)%mod*inv2%mod*((calc(last)-calc(i-)+mod)%mod)%mod;
while(ans>=mod)ans-=mod;
}
cout<<(ans+mod)%mod;
return ;
}

[51nod1238]最小公倍数之和V3的更多相关文章

  1. 51nod1238 最小公倍数之和 V3 莫比乌斯函数 杜教筛

    题意:求\(\sum_{i = 1}^{n}\sum_{j = 1}^{n}lcm(i, j)\). 题解:虽然网上很多题解说用mu卡不过去,,,不过试了一下貌似时间还挺充足的,..也许有时间用phi ...

  2. 51nod1238 最小公倍数之和 V3(莫比乌斯反演)

    题意 题目链接 Sol 不想打公式了,最后就是求一个 \(\sum_{i=1}^n ig(\frac{N}{i})\) \(g(i) = \sum_{i=1}^n \phi(i) i^2\) 拉个\( ...

  3. 51nod1238 最小公倍数之和 V3

    又被这神仙题给坑爆了. 神仙题解. 一开始我把lcm变成ij/gcd然后按照常规套路去推,推到最后发现不是miu * Id而是miu · Id......这还搞鬼啊. 正解居然跟这个差不多,先转成求其 ...

  4. [51Nod1238]最小公倍数之和 V3[杜教筛]

    题意 给定 \(n\) ,求 \(\sum_{i=1}^n \sum_{j=1}^n lcm(i,j)\). \(n\leq 10^{10}\) 分析 推式子 \[\begin{aligned} an ...

  5. 51nod1238. 最小公倍数之和 V3(数论)

    题目链接 https://www.51nod.com/Challenge/Problem.html#!#problemId=1238 题解 本来想做个杜教筛板子题结果用另一种方法过了...... 所谓 ...

  6. [51nod1238] 最小公倍数之和 V3(杜教筛)

    题面 传送门 题解 懒了--这里写得挺好的-- //minamoto #include<bits/stdc++.h> #define R register #define ll long ...

  7. 51NOD 1238 最小公倍数之和 V3 [杜教筛]

    1238 最小公倍数之和 V3 三种做法!!! 见学习笔记,这里只贴代码 #include <iostream> #include <cstdio> #include < ...

  8. 51nod 1238 最小公倍数之和 V3

    51nod 1238 最小公倍数之和 V3 求 \[ \sum_{i=1}^N\sum_{j=1}^N lcm(i,j) \] \(N\leq 10^{10}\) 先按照套路推一波反演的式子: \[ ...

  9. 51 NOD 1238 最小公倍数之和 V3

    原题链接 最近被51NOD的数论题各种刷……(NOI快到了我在干什么啊! 然后发现这题在网上找不到题解……那么既然A了就来骗一波访问量吧…… (然而并不怎么会用什么公式编辑器,写得丑也凑合着看吧…… ...

随机推荐

  1. android使用sharesdk的小感

    1.sharesdk快捷方式,快捷方式集成了所有需要分享到的手机app,但是具有缺陷,举个例子(想要微信分享图片url,但是短信并不想带有图片,否则短信成彩信,这里集成的就有麻烦了,为了解决这种问题, ...

  2. Apache的配置httpd.conf文件配置

    (1) 基本配置: ServerRoot "/mnt/software/apache2" #你的apache软件安装的位置.其它指定的目录如果没有指定绝对路径,则目录是相对于该目录 ...

  3. (原创)带模板的OLE输出EXCEL

    其实带模板的OLE输出EXCEL就是将要输出的EXCEL中一些拥有固定值(如标题,表头行等)的单元格先填充好数据和设置好格式后作为模板上传到SAP 中.这样后续在输出EXCEL时只需从SAP中将模板下 ...

  4. nyoj 黑色帽子

    黑色帽子 时间限制:1000 ms  |  内存限制:65535 KB 难度:1   描述         最近发现了一个搞笑的游戏,不过目前还没玩过.一个舞会上,每个人头上都戴着一顶帽子,帽子只有黑 ...

  5. NFC驱动调试

    1.NFC基本概念: NFC 又称为近场通信,是一种新兴技术,可以在彼此靠近的情况下进行数据交换,是由非接触式射频识别(RFID) 及互连互通技术整合演变而来,通过单一芯片集成感应式读卡器: NFC有 ...

  6. 13-TypeScript单例模式

    在JavaScript中,要实现设计模式比较复杂.而在TypeScript中因为使用面向对象的思想编程,要实现设计模式的方式与后端语言C#.Java等非常类似. 单例模式是一种常用的设计模式,通常用于 ...

  7. LeetCode & 118-Pascal's Triangle-Easy

    Array Description: Given numRows, generate the first numRows of Pascal's triangle. For example, give ...

  8. CentOS 7 Redis安装配置

    1.获取Redis压缩包: wget http:.tar.gz 2.解压测试: mv 到 /usr/local/ tar .tar cd redis 3.使用make测试编译: make 这里可能会出 ...

  9. Web Api 过滤器之 AuthorizationFilter 验证过滤器

    该过滤器是最先执行的过滤器,即使把它放在最后 API [MyActionFilter] [MyExceptionFilter] [MyAuthorize] public void Get() { Tr ...

  10. 新概念英语(1-5)Nice to meet you.

    Is Chang-woo Chinese? Blake:Good morning. B:Good morning, Mr Blake. Blake:This is Miss Sophie Dupont ...