洛谷P3768 简单的数学题(莫比乌斯反演+狄利克雷卷积+杜教筛)
2024-09-06 06:15:16
不会……
两篇加在一起都看不懂……
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 ;
}
最新文章
- ASP.NET OWIN OAuth:遇到的2个refresh token问题
- EF架构~EF异步改造之路~仓储接口的改造
- mysql 行锁一则
- PRML读书会第二章 Probability Distributions(贝塔-二项式、狄利克雷-多项式共轭、高斯分布、指数族等)
- Swift闭包
- Asianux3配置yum
- Hadoop学习总结之二:HDFS读写过程解析
- QC开发只能修改指派给自己的缺陷,而其他的bug可以查看但是不允许修改
- leetcode面试准备:Triangle
- thinkphp中使用PHPEXCEL导出数据
- 针对Oracle数据库中SCOTT方案的多表查询一个例子
- 转换Json中的时间戳为标准时间格式
- IBM的websphere MQ的c#使用
- Oracle DB 总结(SQL)
- Java入门细则
- activeMQ (一)
- [转]win10中安装JDK8以及环境配置
- vs下开发windows服务程序
- Codeforces Round #441 D. Sorting the Coins(模拟)
- 索引视图DEMO1
热门文章
- CUDA: 常量内存与事件
- Java for LeetCode 081 Search in Rotated Sorted Array II
- iOS 分享功能开发
- spring-boot3代码
- [LeetCode] 698. Partition to K Equal Sum Subsets
- HTML5_CSS3仿Google Play垂直菜单
- 算法(Algorithms)第4版 练习 1.3.25 1.3.24
- vue 升降排序
- 在PyCharm上创建Django项目
- ACM学习历程—BestCoder 2015百度之星资格赛1006 单调区间(组合数学)