gdfzoj #987 约数统计(线性筛+思维)
来源:互联网 发布:美帝国主义 知乎 编辑:程序博客网 时间:2024/05/29 07:38
标签:线性筛
P.S.:100分的做法时间复杂度证明类似于调和级数。。。
#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define mod 998244353using namespace std;typedef long long ll;bool f[1000050];ll p[100050],top=0ll,ans[1000050],t[1000050],hz=0ll,l,r,k,n,zzk,tmp;int main(){ scanf("%lld%lld%lld",&l,&r,&k); f[0]=f[1]=1,p[0]=0,n=floor(sqrt(r)); for (int i=2;i<=n;i++) { if (!f[i]) p[++top]=i; for (int j=1;j<=top&&i*p[j]<=n;j++) { f[i*p[j]]=1; if (i%p[j]==0) break; } } for (ll j=l;j<=r;j++) ans[j-l]=1,t[j-l]=j;; for (int i=1;i<=top;i++) { tmp=(l/p[i])*p[i]; if (tmp<l) tmp+=p[i]; for (ll j=tmp;j<=r;j+=p[i]) { zzk=0ll; while (t[j-l]%p[i]==0) t[j-l]/=p[i],zzk++; ans[j-l]=(ans[j-l]*(zzk*k+1))%mod; } } for (ll j=l;j<=r;j++) if (t[j-l]!=1) ans[j-l]=(ans[j-l]*(k+1))%mod; for (ll j=l;j<=r;j++) hz=(hz+ans[j-l])%mod; printf("%lld",hz);}
阅读全文
0 0
- gdfzoj #987 约数统计(线性筛+思维)
- 线性筛 [约数个数/约数和]
- 线性筛法 约数个数
- GalaxyOJ-987 (线性筛+思维)
- bzoj 1968: [Ahoi2005]COMMON 约数研究 (线性筛求约数个数)
- bzoj 2721(线性筛)(约数个数)
- [BZOJ1968][Ahoi2005]COMMON 约数研究(线性筛)
- 51nod1584:加权约数和(数论+线性筛)
- FLappy bird(gdfzoj 469)
- gdfzoj #547 diaosi(dp)
- 校内互测 数学作业 (线性筛求约数个数)
- SSL2522 2014年汕头市选拔赛普级组 约数(线性筛素数)
- gfoj987约数统计
- BZOJ 1968 AHOI2005 COMMON 约数研究 线性筛
- BZOJ 1968 AHOI 2005 COMMON 约数研究 线性筛/暴力
- [Ahoi2005]COMMON 约数研究 【欧拉线性筛的应用】
- gdfzoj #510 树上路径(点分治)
- gdfzoj #727 文本编辑(线段树)
- NodeJS、NPM安装配置步骤(windows版本)
- 1037. 在霍格沃茨找零钱(20)——C语言
- 关于Dalvik虚拟机你需要知道的15个问题
- 关于最大子列和的四种解法
- 字节对齐的根本原因。
- gdfzoj #987 约数统计(线性筛+思维)
- 修改ActivityStudio项目名
- 流程控制语句
- WebService学习总结(三)——使用JDK开发WebService
- 系统栈的工作原理
- python easyicon同类型ico图片批量爬取
- JS函数
- 欢迎使用CSDN-markdown编辑器
- checkbox