$$\begin{eqnarray}&\sum_{i=1}^{n}\sum_{j=1}^{n}ij\gcd(i,j)\\&\sum_{d=1}^{n}\sum_{i=1}^{n}\sum_{j=1}^{n}ij[\gcd(i,j)=d] \\&\sum_{d=1}^{n}d^3\sum_{i=1}^{\frac{n}{d}}\sum_{j=1}^{\frac{n}{d}}ij[\gcd(i,j)=1] \\&\sum_{d=1}^{n}d^3\sum_{i=1}^{\frac{n}{d}}\sum_{j=1}^{\frac{n}{d}}ij\sum_{x|\gcd(i,j)}\mu(x) \\&\sum_{d=1}^{n}d^3\sum_{x=1}^{\frac{n}{d}}x^2\mu(x)\sum_{i=1}^{\frac{n}{dx}}\sum_{j=1}^{\frac{n}{dx}}ij \\&\sum_{d=1}^{n}d^3\sum_{x=1}^{\frac{n}{d}}x^2\mu(x)(1+2+3+…\lfloor \frac{n}{xd} \rfloor )^2 \\&令s(x)=(1+x)*x/2 \\&\sum_{d=1}^{n}d^3\sum_{x=1}^{\frac{n}{d}}x^2\mu(x)s(\lfloor\frac{n}{xd}\rfloor)^2\\&令T=dx \\&\sum_{T=1}s(\lfloor\frac{n}{T}\rfloor)^2\sum_{d|T}d^3\frac{T}{d}^2\mu(\frac{T}{d})\\&\sum_{T=1}s(\lfloor\frac{n}{T}\rfloor)^2T^2\sum_{d|T}d\mu(\frac{T}{d})\\&\sum_{T=1}s(\lfloor\frac{n}{T}\rfloor)^2T^2\varphi(T)\\&令f(x)=x^2\varphi(x)\\&sum(n)=\sum_{i=1}^{n}(g*f)(i)-\sum_{i=2}^{n}g(i)sum(n/i)(杜教筛式子)\\&(g*f)(i)=i*i\sum_{d|i}\varphi(d)=i^3\\&sum(n)=\sum_{i=1}^{n} i^{3}-\sum_{i=2}^{n} i^{2} sum\left(\frac{n}{i}\right)\\&ans=\sum_{T=1}^{n} \operatorname{sum}\left(\frac{n}{T}\right)^{2} T^{2} \sum_{d|T} d \mu\left(\frac{T}{d}\right)\\&\end{eqnarray}$$

#include<bits/stdc++.h>
#define int long long
using namespace std;
const long long INF=1LL<<31;
int N=8000000;
int cnt,n;
long long p[8001000],inv2,inv6,ans,zhi[8001000],mod;
bool he[8001000];
map<long long,long long>M;
long long S(long long x){x%=mod;return x*(x+1)%mod*inv2%mod;}
long long Sump(long long x){x%=mod;return x*(x+1)%mod*(x+x+1)%mod*inv6%mod;}
void xxs()
{
he[1]=p[1]=1;
for(int i=2;i<=N;i++)
{
if(he[i]==0)
{
p[i]=(i-1)%mod;
zhi[++cnt]=i;
}
for(int j=1;j<=cnt&&i*zhi[j]<=N;j++)
{
he[i*zhi[j]]=true;
if(i%zhi[j]==0)
{
p[i*zhi[j]]=1LL*p[i]*zhi[j]%mod;
break;
}
else
{
p[i*zhi[j]]=1LL*p[i]*(zhi[j]-1)%mod;
}
}
}
for(int i=1;i<=N;i++)p[i]=(p[i-1]+1ll*p[i]*i%mod*i%mod)%mod;
}
long long SF(long long x)
{
if(x<=N)
return p[x];
if(M.find(x)!=M.end())
return M[x];
long long ret=S(x);
ret=ret*ret%mod;
for(long long i=2,r;i<=x;i=r+1)
{
r=x/(x/i);
long long tt=(Sump(r)-Sump(i-1))%mod;
ret-=SF(x/i)*tt%mod;
ret%=mod;
}
return M[x]=(ret+mod)%mod;
}
long long quick_pow(long long a,long long b)
{
long long res=1;
while(b>0)
{
if(b&1)
{
res*=a;
res%=mod;
}
a*=a;
a%=mod;
b>>=1;
}
return res;
}
signed main()
{
scanf("%lld%lld",&mod,&n);
inv2=quick_pow(2,mod-2);
inv6=quick_pow(6,mod-2);
xxs();
for(long long i=1,r;i<=n;i=r+1)
{
r=n/(n/i);
long long tt=S(n/i);
tt=tt*tt%mod;
long long gg=(SF(r)-SF(i-1))%mod;
ans+=gg*tt%mod;
ans%=mod;
}
printf("%lld\n",(ans+mod)%mod);
return 0;
}

洛谷P3768 简单的数学题解题报告的更多相关文章

  1. 洛谷 P3768 简单的数学题 解题报告

    P3768 简单的数学题 题目描述 由于出题人懒得写背景了,题目还是简单一点好. 输入一个整数\(n\)和一个整数\(p,\)你需要求出\((\sum_{i=1}^n\sum_{j=1}^n ijgc ...

  2. 【刷题】洛谷 P3768 简单的数学题

    题目描述 由于出题人懒得写背景了,题目还是简单一点好. 输入一个整数n和一个整数p,你需要求出(\(\sum_{i=1}^n\sum_{j=1}^n ijgcd(i,j))~mod~p\),其中gcd ...

  3. 洛谷 - P3768 - 简单的数学题 - 欧拉函数 - 莫比乌斯反演

    https://www.luogu.org/problemnew/show/P3768 \(F(n)=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}ijgcd(i ...

  4. 洛谷 P3768 简单的数学题

    https://www.luogu.org/problemnew/show/P3768 化简一下式子,就是$\sum_{d=1}^ncalc(d)d^2\varphi(d)$ 其中$calc(d)=\ ...

  5. 洛谷P3768 简单的数学题

    解: 神奇的一批......参观yyb巨神的博客. 大致思路就是第一步枚举gcd,发现后面有个限制是gcd=1,用反演,得到的F(x)是两个等差数列求积. 然后发现有个地方我们除法的除数是乘积,于是换 ...

  6. 洛谷P3768 简单的数学题(莫比乌斯反演+狄利克雷卷积+杜教筛)

    传送门 不会…… 两篇加在一起都看不懂…… https://www.cnblogs.com/cellular-automaton/p/8241128.html https://www.luogu.or ...

  7. 洛谷P3768 简单的数学题 【莫比乌斯反演 + 杜教筛】

    题目描述 求 \[\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{n} i*j*gcd(i,j) \pmod{p}\] \(n<=10^{10}\),\(p\) ...

  8. 洛谷P3768 简单的数学题 莫比乌斯反演+杜教筛

    题意简述 求出这个式子 \[ \sum_{i=1}^n\sum_{j=1}^n ij(i,j) \bmod p \] 做法 先用莫比乌斯反演拆一下式子 \[ \begin{split} \sum_{i ...

  9. 洛谷 P3768 简单的数学题 (莫比乌斯反演)

    题意:求$(\sum_{i=1}^{n}\sum_{j=1}^{n}ijgcd(i,j))mod p$(p为质数,n<=1e10) 很显然,推式子. $\sum_{i=1}^{n}\sum_{j ...

随机推荐

  1. 简单的Postman,还能玩出花?

    Postman是一款我们在工作中使用频率非常高的API调试工具,估计很多童鞋在使用它时也比较粗暴,填好接口地址.参数,直接send就完事了,估计大家要说了,这么简单的东西还能玩出什么花来.今天就和大家 ...

  2. noip模拟22[d·e·f]

    noip模拟22 solutions 哈哈哈,这次暴力打满直接190,其实不到哈哈哈,187.. 这次的题暴力极其好打,但是正解确实不简单... 打了好久才改完这个题,改完的时候爽暴了 这些一个字母的 ...

  3. 打造自己的Vue组件文档生成工具

    程序员最讨厌的两件事情,第一种是写文档,另一种是别人没有写文档.有没有直接根据vue组件生成文档的呢?当然是有的的.但第三方使用起来不一定能和现有项目结合使用,往往需要额外的注释用来标记提取信息.使用 ...

  4. Mysql数据库基础知识(全)

    前言:本博文为个人笔记,记录了Mysql的一些基本操作,一般掌握本博文就可以了解数据库.表.数据项的增删改查,希望对大家的学习有所帮助. 首先下载PHPSTUDY,将Mysql配置为系统变量. 具体操 ...

  5. Windows安装Hyper-V并优化部署Linux虚拟机

    安装Hyper-V 打开服务器管理器-->添加角色和功能-->下一步,选择Hyper-V,如图所示 然后一直默认往下走,一直到安装完成,然后重新启动计算机,如图所示 其中涉及的虚拟交换机. ...

  6. 【Lua篇】静态代码扫描分析(三)语法分析

    一.语法分析 通过将词法分析获取的Token流按照目标语言的语法进行解析的过程,例如解析函数声明.函数调用.变量声明.各种语句等. 二.Lua语法分析 在写语法分析程序前,先需要了解Lua的语句和语法 ...

  7. Flink EOS如何防止外部系统乱入--两阶段提交源码

    一.前言 根据维基百科的定义,两阶段提交(Two-phase Commit,简称2PC)是巨人们用来解决分布式系统架构下的所有节点在进行事务提交时保持一致性问题而设计的一种算法,也可称之为协议. 在F ...

  8. git命令行or图形化界面?看这篇操作就够了

    我们在自己的私人分支开发好各自的模块后,就要合并到master,这个时候在idea里边先切换到master,然后update一下获取最新更新,解决一下冲突,最后再合并自己的私人分支,add,commi ...

  9. 使用账号密码来操作github? NO!

    目录 简介 背景介绍 创建令牌 使用令牌 缓存令牌 使用GCM 总结 简介 最近在更新github文件的时候,突然说不让更新了,让我很是困惑,原因是在2021年8月13号之后,github已经不让直接 ...

  10. @ConfigurationProperties实现自定义配置绑定

    @ConfigurationProperties使用 创建一个类,类名上方注解,配置prefix属性,如下代码: @ConfigurationProperties( prefix = "he ...