传送门

不会……

两篇加在一起都看不懂……

https://www.cnblogs.com/cellular-automaton/p/8241128.html

https://www.luogu.org/blog/cjyyb/solution-p3768

 //minamoto
#include<iostream>
#include<cstdio>
#include<map>
#define ll long long
using namespace std;
const int N=4e6+;
map<ll,ll> mp;
ll sum[N],phi[N],pri[N],cnt,vis[N],mod6,mod;
//mod是2的逆元,mod6是6的逆元
void init(ll p){
vis[]=sum[]=;
for(int i=;i<N;++i){
if(!vis[i]) pri[++cnt]=i,phi[i]=i-,sum[i]=1ll*i*i%p*phi[i]%p;
for(int j=;j<=cnt,i*pri[j]<N;++j){
vis[i*pri[j]]=;
int now=i*pri[j];
if(i%pri[j]==){
phi[now]=phi[i]*pri[j]%p;
sum[now]=phi[now]*now%p*now%p;
break;
}
phi[now]=phi[i]*(pri[j]-)%p;
sum[now]=phi[now]*now%p*now%p;
}
}
for(int i=;i<N;++i) (sum[i]+=sum[i-])%=p;
}
ll ksm(ll x,ll y,ll p){
ll res=;
while(y){
if(y&) (res*=x)%=p;
(x*=x)%=p,y>>=;
}
return res;
}
ll calc(ll n,ll p){
n%=p;
ll res=((+n)*n%p)*mod%p;
(res*=res)%=p;
return res;
}
ll calcs(ll n,ll p){
n%=p;
ll res=(n*(n+)%p)*(*n+)%p;
(res*=mod6)%=p;
return res;
}
ll calcsum(ll n,ll p){
if(n<N) return sum[n];
if(mp.count(n)) return mp[n];
ll x=,res=calc(n,p);
while(x<=n){
ll y=n/(n/x);
res=((res-(calcs(y,p)-calcs(x-,p)+p)%p*calcsum(n/x,p)%p)+p)%p;
x=y+;
}
return mp[n]=res;
}
int main(){
// freopen("testdata.in","r",stdin);
ll p,n;
scanf("%lld%lld",&p,&n);
mod=ksm(,p-,p),mod6=ksm(,p-,p);
init(p);
ll x=,ans=;
while(x<=n){
ll y=n/(n/x);
(ans+=((calcsum(y,p)-calcsum(x-,p)+p)%p*calc(n/x,p)%p))%=p;
x=y+;
}
printf("%lld\n",ans);
return ;
}

洛谷P3768 简单的数学题(莫比乌斯反演+狄利克雷卷积+杜教筛)的更多相关文章

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

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

  2. 中国剩余定理 & 欧拉函数 & 莫比乌斯反演 & 狄利克雷卷积 & 杜教筛

    ssplaysecond的博客(请使用VPN访问): 中国剩余定理: https://ssplaysecond.blogspot.jp/2017/04/blog-post_6.html 欧拉函数: h ...

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

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

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

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

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

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

  6. 洛谷P3768 简单的数学题

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

  7. 洛谷 P3768 简单的数学题

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

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

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

  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. 微信小程序开发:学习笔记[5]——JavaScript脚本

    微信小程序开发:学习笔记[5]——JavaScript脚本 快速开始 介绍 小程序的主要开发语言是 JavaScript ,开发者使用 JavaScript 来开发业务逻辑以及调用小程序的 API 来 ...

  2. ZOJ - 3865 Superbot 【BFS】

    题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3865 思路 一个迷宫题 但是每次的操作数和普通的迷宫题不一样 0 ...

  3. SpringBoot2.0之整合ActiveMQ(发布订阅模式)

    发布订阅模式与前面的点对点模式很类似,简直一毛一样 注意:发布订阅模式 先启动消费者 公用pom: <project xmlns="http://maven.apache.org/PO ...

  4. BZOJ 1601 [Usaco2008 Oct]灌水:最小生成树

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1601 题意: Farmer John已经决定把水灌到他的n(1<=n<=300 ...

  5. BZOJ 1206 [HNOI2005]虚拟内存:模拟

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1206 题意: 内存大小为n(外存无限大),共有m次访问,每一次访问的信息编号为p. 对于每 ...

  6. storm源码剖析(1):storm脚本

    今天看了一下storm的命令行脚本${STORM_HOME}/bin/storm,现在将剖析过程整理一下,作为记录.注:使用的storm版本为0.8.0. ${STORM_HOME}/bin/stor ...

  7. 详解C/C++ 编译 g++ gcc 的区别

    我们在编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而c++代码用g++, 或者说编译用gcc,链 接用g++,一时也不知哪个说法正确,如果再遇上个ex ...

  8. 集训Day4

    在bzoj刷了好几天杂题感觉手感不是很好 继续回来集训一下 好几天没更新了啊... bzoj1875 一个无向图,一个人要从起始点走$t$步走到终点,不能沿着刚走过来那条边回去,问有多少种走法 $m ...

  9. bjwc Day3 & 4 妈妈我这是来了个什么地方呀

    真·bjwc开始了 Day3 T1啥啥啥 第k大斜率?想都没想码了个暴力,然后爆零...暴力都能错,退役 T2看着像网络流就扔了个网络流大暴力上去,六七十分的样子然后蜜汁wa T3题面说“想都没想就弄 ...

  10. Gym:101630J - Journey from Petersburg to Moscow(最短路)

    题意:求1到N的最短路,最短路的定义为路径上最大的K条边. 思路:对于每种边权,假设为X,它是第K大,那么小于X的变为0,大于K的,边权-X.然后求最短路,用dis[N]+K*X更新答案. 而小于K的 ...