洛谷 P3768 简单的数学题 (莫比乌斯反演)
题意:求$(\sum_{i=1}^{n}\sum_{j=1}^{n}ijgcd(i,j))mod p$(p为质数,n<=1e10)
很显然,推式子。
$\sum_{i=1}^{n}\sum_{j=1}^{n}ijgcd(i,j)$
=$\sum_{d=1}^{n}\sum_{i=1}^{n}\sum_{j=1}^{n}ijd[gcd(i,j)==d]$
=$\sum_{d=1}^{n}d^3\sum_{i=1}^{\lfloor \frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor \frac{n}{d}\rfloor}ij[gcd(i,j)==d]$
=$\sum_{d=1}^{n}d^3\sum_{i=1}^{\lfloor \frac{n}{d}\rfloor}\mu(i)i^2S({\lfloor \frac{n}{id}\rfloor})^2,S(n)=(n+1)*n/2$
=$\sum_{T=1}^{n}S({\lfloor \frac{n}{T}\rfloor})^2\sum_{d|T}d^3(\frac{T}{d})^2\mu(\frac{T}{d})$
=$\sum_{T=1}^{n}S({\lfloor \frac{n}{T}\rfloor})^2T^2\sum_{d|T}d\mu(\frac{T}{d})$
由$\mu*id=\varphi $可得$\sum_{T=1}^{n}S({\lfloor \frac{n}{T}\rfloor})^2T^2\varphi (T)$
前面整除分块,只需要预处理$T^2\varphi(T)$ 前缀和即可。
由于n有1e10那么大,就需要用到非线性的求前缀和的方法,这里用到杜教筛,见代码。
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e6+;
int pri[N],tot,phi[N],sum[N];
bool p[N];
ll n,MD,ans,inv6;
unordered_map<ll,int> w;
void init() {
phi[]=;
for(int i=;i<N;i++) {
if(!p[i]) phi[i]=i-,pri[tot++]=i;
for(int j=;j<tot&&pri[j]*i<N;j++) {
p[i*pri[j]]=true;
if(i%pri[j]==) {
phi[i*pri[j]]=phi[i]*pri[j];
break;
}
else phi[i*pri[j]]=phi[i]*phi[pri[j]];
}
}
for(int i=;i<N;i++) sum[i]=(sum[i-]+1LL*i*i%MD*phi[i]%MD)%MD;
}
ll pre_3(ll x) {
x%=MD;
ll t=x*(x+)/%MD;
return t*t%MD;
}
ll pre_2(ll x) {
x%=MD;
return x*(x+)%MD*(*x+)%MD*inv6%MD;
}
int quick_pow(int x,int y) {
int ans=;
while(y) {
if(y&) ans=1LL*ans*x%MD;
y>>=;
x=1LL*x*x%MD;
}
return ans;
}
int cal(ll x) {
if(x<N) return sum[x];
if(w[x]) return w[x];
ll ans=pre_3(x);
for(ll l=,r;l<=x;l=r+) {
r=x/(x/l);
ans=(ans-(pre_2(r)-pre_2(l-)+MD)%MD*cal(x/l)%MD+MD)%MD;
}
return w[x]=ans;
}
int main() {
scanf("%lld%lld",&MD,&n);
inv6=quick_pow(,MD-),init();
for(ll l=,r;l<=n;l=r+) {
r=n/(n/l);
ans=(ans+pre_3(n/l)*(cal(r)-cal(l-)+MD)%MD)%MD;
}
printf("%lld\n",ans);
return ;
}
洛谷 P3768 简单的数学题 (莫比乌斯反演)的更多相关文章
- 洛谷P3768 简单的数学题 莫比乌斯反演+杜教筛
题意简述 求出这个式子 \[ \sum_{i=1}^n\sum_{j=1}^n ij(i,j) \bmod p \] 做法 先用莫比乌斯反演拆一下式子 \[ \begin{split} \sum_{i ...
- 洛谷 P3768 简单的数学题 解题报告
P3768 简单的数学题 题目描述 由于出题人懒得写背景了,题目还是简单一点好. 输入一个整数\(n\)和一个整数\(p,\)你需要求出\((\sum_{i=1}^n\sum_{j=1}^n ijgc ...
- 【刷题】洛谷 P3768 简单的数学题
题目描述 由于出题人懒得写背景了,题目还是简单一点好. 输入一个整数n和一个整数p,你需要求出(\(\sum_{i=1}^n\sum_{j=1}^n ijgcd(i,j))~mod~p\),其中gcd ...
- 洛谷 - P3768 - 简单的数学题 - 欧拉函数 - 莫比乌斯反演
https://www.luogu.org/problemnew/show/P3768 \(F(n)=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}ijgcd(i ...
- 洛谷P3768 简单的数学题(莫比乌斯反演+狄利克雷卷积+杜教筛)
传送门 不会…… 两篇加在一起都看不懂…… https://www.cnblogs.com/cellular-automaton/p/8241128.html https://www.luogu.or ...
- 洛谷P3768 简单的数学题 【莫比乌斯反演 + 杜教筛】
题目描述 求 \[\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{n} i*j*gcd(i,j) \pmod{p}\] \(n<=10^{10}\),\(p\) ...
- 洛谷P3768 简单的数学题
解: 神奇的一批......参观yyb巨神的博客. 大致思路就是第一步枚举gcd,发现后面有个限制是gcd=1,用反演,得到的F(x)是两个等差数列求积. 然后发现有个地方我们除法的除数是乘积,于是换 ...
- 洛谷 P3768 简单的数学题
https://www.luogu.org/problemnew/show/P3768 化简一下式子,就是$\sum_{d=1}^ncalc(d)d^2\varphi(d)$ 其中$calc(d)=\ ...
- 洛谷P3768 简单的数学题解题报告
$$\begin{eqnarray}&\sum_{i=1}^{n}\sum_{j=1}^{n}ij\gcd(i,j)\\&\sum_{d=1}^{n}\sum_{i=1}^{n}\su ...
随机推荐
- TZ_05_Spring_Transaction的纯注解开发
1.数据库配置 jdbcConfiguation.java 1>使用Spring的EL表达式配合@Value()注解 @Value("${jdbc.Driver}") pri ...
- SSM2-搭建maven常见的错误以及解决方法
1.项目中的jdk版本电脑自带的jdk版本不一致 mavne-parent 的pom.xml文件 <!-- java编译插件 --> <plugin> <groupId& ...
- Eclipse luna安装 Ivy
在线安装地址:http://www.apache.org/dist/ant/ivyde/updatesite
- 【Django入坑之路】Models操作
1:字段 AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bigint自增列,必须填入参数 pr ...
- Linux ifconfig 配置网络接口
Linux ifconfig 可以用来配置网络接口的IP地址.掩码.网关.物理地址等:值得一说的是用Linux ifconfig 为网卡指定IP地址,这只是用来调试网络用的,并不会更改系统关于网卡的配 ...
- xor
xor 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言1048576K 64bit IO Format: %lld 题目描述 Your are given n ...
- 洛谷P1314 [NOIP2011提高组Day2T2] 聪明的质监员
P1314 聪明的质监员 题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿产的流程是: ...
- 洛谷P1006 NOIP提高组2008 传纸条
P1006 传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n 列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无 ...
- OSGi教程:Class Space Consistency
此教程基于OSGi Core Release 7 OSGi类空间的一致性 详细内容上面英文教程有详细解答 下面主要是一些个人见解,若有不当之处,欢迎指出: "Class space cons ...
- 【python之路15】深浅拷贝及函数
一.集合数据类型(set):无序不重复的集合,交集.并集等功能 二.三元运算符 三.深浅拷贝 1)字符串和数字:深浅内存地址都一样 2)其他:浅拷贝:仅复制最外面第一层 深拷贝:除了最内层其他均拷贝 ...