Description:

求出\((\sum_{i=1}^n \sum_{j=1}^n ij\ gcd\ (i,j)) mod\ p\)

Hint:

\(n<=10^{10}​\)

Solution:

\(Ans=\sum_{d=1}^nd^3 \sum_{i=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{n}{d} \rfloor} ij\ \ [gcd(i,j)==1]​\)

\(Ans=\sum_{d=1}^nd^3\sum_{k=1}^{\lfloor\frac{n}{d}\rfloor}\mu(k)\ k^2 \sum_{i=1}^{\lfloor \frac{n}{kd} \rfloor} \sum_{j=1}^{\lfloor \frac{n}{kd} \rfloor} ij​\)

\(Ans=\sum_{T=1}^n \sum_{k=1}^{T} \mu(k) \ k^2\ (\frac{T}{k})^3 \ Sum(\lfloor \frac{n}{T} \rfloor)^2 ​\)

\(Ans=\sum_{T=1}^n T^2 \phi(T) \ Sum(\lfloor \frac{n}{T} \rfloor)^2 ​\)

杜教筛出 \(T^2 \phi(T)\) 的前缀和

\(令g(x)=x^2\)

\(\sum_{d=1}^n f(d)*g(\frac{n}{d}) = \sum \phi(d)\ d^2(\frac{n}{d})^2=n^3\)

至此可求

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mxn=8e6;
ll mod,tot,y,z;
int p[mxn+5],vis[mxn+5];
ll ph[mxn+5];
map<ll ,ll > sph; ll qpow(ll a,ll b)
{
ll ans=1,base=a;
while(b) {
if(b&1) ans=1ll*ans*base%mod;
base=1ll*base*base%mod;
b>>=1;
}
return ans;
} void sieve()
{
vis[1]=ph[1]=1;
for(int i=2;i<=mxn;++i) {
if(!vis[i]) ph[i]=i-1,p[++tot]=i;
for(int j=1;j<=tot&&p[j]*i<=mxn;++j) {
vis[p[j]*i]=1;
if(i%p[j]) ph[p[j]*i]=ph[p[j]]*ph[i]%mod;
else {ph[p[j]*i]=ph[i]*p[j]%mod;break;}
}
}
for(int i=1;i<=mxn;++i) ph[i]=(ph[i]*i%mod*i%mod+ph[i-1])%mod;
y=qpow(2,mod-2),z=qpow(6,mod-2);
} inline ll cal1(ll x) {
x%=mod;
return (1ll*x*(x+1)%mod*y%mod)*(1ll*x*(x+1)%mod*y%mod)%mod;
} inline ll cal2(ll x) {
x%=mod;
return 1ll*x*(x+1)%mod*(2*x%mod+1)%mod*z%mod;
} ll get(ll n)
{
if(n<=mxn) return ph[n];
if(sph[n]) return sph[n]; ll ans=0;
for(ll l=2,r;l<=n;l=r+1) {
r=n/(n/l);
ans=(ans+(cal2(r)-cal2(l-1)+mod)%mod*get(n/l)%mod)%mod;
}
return sph[n]=((cal1(n)-ans)%mod+mod)%mod;
} int main()
{
ll n; ll ans=0;
scanf("%d %lld",&mod,&n); sieve();
for(ll l=1,r;l<=n;l=r+1) {
r=n/(n/l);
ans=(ans+1ll*cal1(n/l)%mod*(get(r)-get(l-1)+mod)%mod)%mod;
}
printf("%lld",ans);
return 0;
}

[P3768]简单的数学题的更多相关文章

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

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

  2. Luogu P3768 简单的数学题

    非常恶心的一道数学题,推式子推到吐血. 光是\(\gcd\)求和我还是会的,但是多了个\(ij\)是什么鬼东西. \[\sum_{i=1}^n\sum_{j=1}^nij\gcd(i,j)=\sum_ ...

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

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

  4. P3768 简单的数学题 杜教筛+推式子

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

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

    [题目链接] https://www.luogu.org/problemnew/show/P3768 [题目描述] 求 \(\sum_{i=1}^{n}\sum_{j=1}^{n}i* j* gcd( ...

  6. 【Luogu】P3768简单的数学题(杜教筛)

    题目链接 emm标题全称应该叫“莫比乌斯反演求出可狄利克雷卷积的公式然后卷积之后搞杜教筛” 然后成功地困扰了我两天qwq 我们从最基本的题意开始,一步步往下推 首先题面给出的公式是$\sum\limi ...

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

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

  8. 洛谷 P3768 简单的数学题

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

  9. 洛谷P3768 简单的数学题

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

随机推荐

  1. FarBox--另类有趣的网站服务【转】

    FarBox--另类有趣的网站服务 转自:http://mosir.org/html/y2012/the-interesting-web-service-serve-by-FarBox.html 作者 ...

  2. HTML学习笔记05-文本格式化

    HTML格式化标签 HTML使用标签<b>与<i>对输出的文本进行格式,如:粗体or斜体 这些HTML标签称为格式化标签 <!DOCTYPE HTML> <h ...

  3. python各种post上传文件

    1.带证书上传文件 filename = '/tmp/test.cert'hash_v = 'assumethisisahash' #这是一种流式上传的方式with open(filename, 'r ...

  4. ThinkPHP 框架2.1,2.2和3.0版本开启lite模式导致URL命令执行漏洞

    在开启了Lite模式后,在ThinkPHP/extend/Mode/Lite/Dispatcher.class.php中第73行: // 解析剩余的URL参数 $res = preg_replace( ...

  5. centos7忘记登录密码修改

    很多时候我们都会忘记Linux root 用户的口令,下面就教大家如果忘记root口令怎么办 第1步:开机后在内核上按“e”.截图如下 按e以后会进入内核启动页面,如下图 第2步:在linux16这行 ...

  6. Java 开发环境配置--eclipse工具进行java开发

    Java 开发环境配置 在本章节中我们将为大家介绍如何搭建Java开发环境. Windows 上安装开发环境 Linux 上安装开发环境 安装 Eclipse 运行 Java Cloud Studio ...

  7. LeetCode(1):两数之和

    写在前面:基本全部参考大神“Grandyang”的博客,附上网址:http://www.cnblogs.com/grandyang/p/4130379.html 写在这里,是为了做笔记,同时加深理解, ...

  8. python 全栈开发,Day61(库的操作,表的操作,数据类型,数据类型(2),完整性约束)

    昨日内容回顾 一.回顾 定义:mysql就是一个基于socket编写的C / S架构的软件 包含: ---服务端软件 - socket服务端 - 本地文件操作 - 解析指令(mysql语句) ---客 ...

  9. day8--socket回顾

    后面学习了线程.协成和异步,它们的框架都是基于socket的协议,基本原理都是一样的,现在把这几个模块重温一下,尽量掌握这些知识更全面一些. 动态导入模块,知道知道模块名,可以像反射一样,使用字符串来 ...

  10. 解决mount.nfs: access denied by server while mounting错误

    环境:oraclelinux6.7 以前在centos服务器上安装nfs.挂载NFS都没出现问题,今天在oraclelinux上安装后,在客户端mount的时候报mount.nfs: access d ...