P3768 简单的数学题

题目描述

由于出题人懒得写背景了,题目还是简单一点好。

输入一个整数\(n\)和一个整数\(p,\)你需要求出\((\sum_{i=1}^n\sum_{j=1}^n ijgcd(i,j)) \bmod p\),其中\(gcd(a,b)\)表示\(a\)与\(b\)的最大公约数。

刚才题面打错了,已修改

输入输出格式

输入格式:

一行两个整数\(p\)、\(n\)。

输出格式:

一行一个整数\((\sum_{i=1}^n\sum_{j=1}^n ijgcd(i,j))\bmod p\)。

说明

对于\(20\%\)的数据,\(n \leq 1000\)。

对于\(30\%\)的数据,\(n \leq 5000\)。

对于\(60\%\)的数据,\(n \leq 10^6\),时限\(1s\)。

对于另外\(20\%\)的数据,\(n \leq 10^9\),时限\(3s\)。

对于最后\(20\%\)的数据,\(n \leq 10^{10}\),时限\(6s\)。

对于\(100\%\)的数据,\(5 \times 10^8 \leq p \leq 1.1 \times 10^9\)且\(p\)为质数。


从各种方向推推式子,你会差不多发现有

\[\sum_{i=1}^n\sum_{j=1}^n ijgcd(i,j)
\]

\[=\sum_{T=1}^nF(\lfloor\frac{n}{T}\rfloor)^2T^2\varphi(T)
\]

其中\(F(n)=\sum\limits_{i=1}^ni\)

然后上杜教筛设\(\mathbf f(n)=n^2\varphi(n)\),则有

\[\mathbf {Id}^3=\mathbf f *\mathbf {Id}^2
\]

带进去杜教筛得到

\[\mathbf s(n)=\sum_{i=1}^n i^3-\sum_{i=2}^n i^2 \mathbf s(\lfloor\frac{n}{i}\rfloor)
\]

然后小学奥数一波算前缀和就行了

小心爆\(long \ long\)


Code:

#include <cstdio>
#include <unordered_map>
#define ll long long
const int N=5e6;
ll n,mod,phi[N+10],inv2,inv6;
int pri[N+10],ispri[N+10],cnt;
ll qp(ll d,ll k){ll re=1;while(k){if(k&1)re=re*d%mod;d=d*d%mod,k>>=1;}return re;}
ll f(ll x){x%=mod;return x*(x+1)%mod*inv2%mod;}
ll g(ll x){x%=mod;return x*(x+1)%mod*(2*x%mod+1)%mod*inv6%mod;}
void init()
{
phi[1]=1;
for(int i=2;i<=N;i++)
{
if(!ispri[i])
{
phi[i]=i-1;
pri[++cnt]=i;
}
for(int j=1;j<=cnt&&i*pri[j]<=N;j++)
{
ispri[i*pri[j]]=1;
if(i%pri[j]==0){phi[i*pri[j]]=phi[i]*pri[j]%mod;break;}
else phi[i*pri[j]]=phi[i]*(pri[j]-1)%mod;
}
}
for(int i=1;i<=N;i++)
phi[i]=(phi[i]*i%mod*i%mod+phi[i-1])%mod;
}
std::unordered_map <ll,ll> Phi;
ll calphi(ll n)
{
if(n<=N) return phi[n];
if(Phi.find(n)!=Phi.end()) return Phi[n];
ll ret=f(n)*f(n)%mod;
for(ll l=2,r;l<=n;l=r+1)
{
r=n/(n/l);
(ret-=(calphi(n/l)*(g(r)-g(l-1))%mod))%=mod;
}
ret=(ret%mod+mod)%mod;
return Phi[n]=ret;
}
int main()
{
scanf("%lld%lld",&mod,&n);
init();
ll ans=0;inv6=qp(6,mod-2);inv2=qp(2,mod-2);
for(ll l=1,r;l<=n;l=r+1)
{
r=n/(n/l);
(ans+=f(n/l)*f(n/l)%mod*(calphi(r)-calphi(l-1))%mod)%=mod;
}
ans=(ans%mod+mod)%mod;
printf("%lld\n",ans);
return 0;
}

2018.11.26

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

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

    $$\begin{eqnarray}&\sum_{i=1}^{n}\sum_{j=1}^{n}ij\gcd(i,j)\\&\sum_{d=1}^{n}\sum_{i=1}^{n}\su ...

  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. 那些年安装Appium遇到的坑

      安装appium以及相关的总体记录   1 主要流程是参照这个来 https://www.cnblogs.com/wangyinghao/p/5780151.html 细节参考虫师的博客 http ...

  2. TPO 02 - Desert Formation

    TPO 02 - Desert Formation NOTE: 主要意思(大概就是主谓宾)用粗体标出:重要的其它用斜体: []中的是大致意思,可能与原文有关也可能无关,但不会离题 目的为训练句子/段落 ...

  3. 爬虫2.3-scrapy框架-post、shell、验证码

    目录 scrapy框架-post请求和shell 1. post请求 2. scrapy shell 3. 验证码识别 scrapy框架-post请求和shell 1. post请求 scrapy框架 ...

  4. HP VC模块Shared uplink Sets配置参考

    首先配置MAC地址的分配方式 在左侧导航栏中,点解"MAC Addresses" 选择VC分配MAC地址,并且选择一个合适的地址段,点击"Apply"继续 在弹 ...

  5. 从零开始的Python学习Episode 13——常用模块

    模块 一.time模块 时间戳(timestamp) :时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量. 元组(struct_time)   :struct_time元组共有9 ...

  6. 基于C#的机器学习--机器学习的基本知识

    机器学习的基本知识 ,…用n个观测值测量.但我们不再对Y的预测感兴趣,因为我们不再有Y了,我们唯一感兴趣的是在已有的特征上发现数据模式: ​ 在前面的图中,我们可以看到这样的数据本身更适合于非线性方法 ...

  7. zabbix监控历史数据清理

    2018/12/24 14:00:57  zabbix监控运行一段时间以后,会留下大量的历史监控数据,zabbix数据库一直在增大:可能会造成系统性能下降,查看历史数据室查询速度缓慢. zabbix里 ...

  8. Fedora 26/27/28网易云音乐安装

    信息从 https://www.southcity-oldboy.com/1474.html获取,感谢站长南城旧少年! 以下为前辈网页上的内容 1.安装 RPM Fusion 源 (free): ht ...

  9. DOM实战

    作者声明:本博客中所写的文章,都是博主自学过程的笔记,参考了很多的学习资料,学习资料和笔记会注明出处,所有的内容都以交流学习为主.有不正确的地方,欢迎批评指正 视频来源:https://www.bil ...

  10. CS小分队第二阶段冲刺站立会议(5月30日)

    昨日成果:解决了前天遗留的问题,实现了主界面对于电脑上应用的添加和删除 遇到问题:添加和删除按钮时候,按钮位置图像与北京图片冲突,会出现闪动现象. 删除是通过右键单击出现菜单,其中有删除的选项,但是这 ...