[JZOJ5250]【GDOI2018模拟8.11】质数
来源:互联网 发布:八爪鱼支架 知乎 编辑:程序博客网 时间:2024/06/06 05:03
Description
求
Solution
显然,2^f(i)就是每个质因子选或者不选
那么2^f(i)等价于
设
反演一下
易得
因为
所以
因为
设h(i)为i的约数个数和
那么
总的就是
交换主体,把
1到N的约数个数和,不妨枚举i作为约数的贡献,即i在N内倍数个数显然是
原式化为
前面分块,后面也分块处理
复杂度
Code
#include <cstdio>#include <cstdlib>#include <iostream>#include <algorithm>#include <cmath>#include <cstring>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fod(i,a,b) for(int i=a;i>=b;i--)#define N 1000005#define LL long long#define mo 998244353using namespace std;LL n,mu[N],n1,s[N];int pr[N],l;bool bz[N];void prp(){ mu[1]=s[1]=1; fo(i,2,n1) { if(!bz[i]) { mu[i]=-1; pr[++l]=i; } for(int j=1;j<=l&&pr[j]*i<=n1;j++) { bz[i*pr[j]]=1; if(i%pr[j]==0) { mu[i*pr[j]]=0; break; } else mu[i*pr[j]]=-mu[i]; } s[i]=(s[i-1]+mu[i])%mo; }}int main(){ cin>>n; n1=sqrt(n); prp(); LL i=1,ans=0; while(i<=n1) { LL s1=0,m=n/(i*i),i1=sqrt(n/m),p=1; while(p<=m) { LL p1=m/(m/p); s1=(s1+(m/p)*(p1-p+1)%mo)%mo; p=p1+1; } ans=(ans+(s[i1]-s[i-1]+mo)%mo*s1)%mo; i=i1+1; } printf("%lld\n",ans);}
阅读全文
0 0
- [JZOJ5250]【GDOI2018模拟8.11】质数
- 【jzoj5250】【GDOI2018模拟8.11】【质数】
- 【JZOJ5250】【GDOI2018模拟8.11】质数
- 【JZOJ5250】【GDOI2018模拟】质数(数论)
- 【GDOI2018模拟8.11】质数
- 【GDOI2018模拟8.11】质数
- 【JZOJ 5250】【GDOI2018模拟8.11】质数
- 【GDOI2018模拟7.8】质数
- [JZOJ5250]质数
- 质数,函数【GDOI2018模拟7.8】
- 【GDOI2018模拟7.8】质数 乱搞+哥德巴赫猜想
- 【GDOI2018模拟8.11】决战
- 【GDOI2018模拟7.6】吃干饭
- 【GDOI2018模拟7.9】期末考试
- 【GDOI2018模拟7.8】矩阵
- 【GDOI2018模拟7.10】B
- 【GDOI2018模拟7.10】C
- 【GDOI2018模拟7.10】B
- linux内核设计与实现---中断和中断处理(7)
- Atitit 项目管理软件 在线服务 attilax总结 1. 项目管理协作的历史1 1.1. Worktile 406k1 1.2. Teambition 584k in baidu
- spring mvc自动封装前端发送的json数据绑定为指定对象
- 安装Grid执行root.sh出现ohasd failed解决方案
- 从零开始学习Linux之Linux安装
- [JZOJ5250]【GDOI2018模拟8.11】质数
- 数据库安全
- 左偏树自己的一点理解【hdu1512】【Monkey King】
- Android中的Apk的加固实现原理
- 从url提取key vale
- dm3730平台oled显示时钟——ssd1306驱动
- zxing开源项目 解决生成二维码保存的问题
- 树形结构+博弈论
- SourceGraph的使用