题目

众所周知,除数个数函数\(\sigma_0=I^2\),\(I\)就是狄利克雷卷积里的\(1\)函数

于是熟悉狄利克雷卷积的话很快就能看出我们要求的就是\(I\times I^{k}\),即\(I^{k+1}\),我们给这个函数起一个名字叫\(f^{k+1}\)

显然这个东西是积性函数,于是我们考虑一下指数次幂的\(f\)如何求

显然

\[f^{k+1}(n)=\sum_{d|n}f^{k}(d)
\]

对于指数次幂\(p^m\)

\[f^{k+1}(p^m)=\sum_{i=0}^mf^k(p^i)
\]

我们考虑一下快速求\(f^{k+1}(p^m)\),发现就是就是把这\(m\)次幂分配到\(k+1\)次减少的机会里去,当然最后不一定减少到\(0\),于是等价于把\(m\)个球分给\(k+2\)个盒子,允许为空,插板一下得知这个是\(\binom{k+m+1}{m+1}\),我们发现这个组合数非常好算,于是直接暴力就好了,由于又是积性函数,我们分解质因数之后直接合并就可以了

代码

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define re register
#define min std::min
#define LL long long
const int maxn=1e7+5;
const int mod=998244353;
int f[maxn],p[maxn>>2],inv[505];
LL n,m;int T,ans=1;
inline int C(LL n,int m) {
int now=1;
for(re int i=n;i>=n-m+1;--i) now=1ll*now*(i%mod)%mod;
for(re int i=1;i<=m;i++) now=1ll*now*inv[i]%mod;
return now;
}
int main() {
scanf("%lld%lld",&n,&m);inv[1]=1;
for(re int i=2; i<505; i++) inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;
f[1]=1;T=std::sqrt(n)+1;T=min(T,maxn-1);
for(re int i=2;i<=T;i++) {
if(!f[i]) p[++p[0]]=i;
for(re int j=1;j<=p[0]&&p[j]*i<=T;j++) {
f[p[j]*i]=1;
if(i%p[j]==0) break;
}
}
p[++p[0]]=1e9+7,p[++p[0]]=998244353,p[++p[0]]=1e9+9;
for(re int i=1;i<=p[0];i++) {
int t=0;
while(n%p[i]==0) n/=p[i],t++;
if(!t) continue;
ans=1ll*ans*C((t+m+1)%mod,t)%mod;
}
if(n!=1) ans=1ll*ans*C(m+2,1)%mod;
printf("%d\n",ans);
return 0;
}

【LGP4714】「数学」约数个数和的更多相关文章

  1. 洛谷 P4714 「数学」约数个数和 解题报告

    P4714 「数学」约数个数和 题意(假):每个数向自己的约数连边,给出\(n,k(\le 10^{18})\),询问\(n\)的约数形成的图中以\(n\)为起点长为\(k\)的链有多少条(注意每个点 ...

  2. luogu 6月月赛 E 「数学」约数个数和

    题面在这里! 第一眼感觉炒鸡水啊...只要把N质因数分解一下,因为k次约数相当于求k+2元一次方程的非负整数解,所以答案就是和每个质因子指数有关的一些组合数乘起来. 但是要用pillard's rho ...

  3. P4714 「数学」约数个数和

    题解: 会了Miller-Rabin这题就很简单了 首先这种题很容易想到质因数分解 但是暴力根号算法是不行的 所以要用到 Miller-Rabin素数 https://blog.csdn.net/lt ...

  4. 「BZOJ 3994」「SDOI 2015」约数个数和「莫比乌斯反演」

    题意 设\(d(x)\)为\(x\)的约数个数,求\(\sum_{i=1}^{n}\sum_{j=1}^{m}d(ij)\). 题解 首先证个公式: \[d(ij) = \sum_{x|i}\sum_ ...

  5. 「10.8」simple「数学」·walk「树上直径」

    A. Simple 本来以为很难,考场瞎推了推好像会了...... 想起小凯的诱惑,迷?? 首先$n$,$m$,$q$同除$gcd(n,m)$,显然$q$以内的数假如不是$gcd$的倍数,那么一定不能 ...

  6. Codeforces 626E Simple Skewness 「数学」「二分」

    题意: 给你一堆无序数,寻找它的一个子堆,使得子堆的平均数减中位数最大. 数字的个数n<=2e5 0<=xi<=1e6. 思路: 首先可以证明这堆数一定是奇数个,证明方法是尝试在奇数 ...

  7. Loj 3058. 「HNOI2019」白兔之舞

    Loj 3058. 「HNOI2019」白兔之舞 题目描述 有一张顶点数为 \((L+1)\times n\) 的有向图.这张图的每个顶点由一个二元组 \((u,v)\) 表示 \((0\le u\l ...

  8. 「MoreThanJava」计算机发展史—从织布机到IBM

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  9. 「MoreThanJava」一文了解二进制和CPU工作原理

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

随机推荐

  1. 微信小程序自定义导航栏组件,完美适配所有手机,可实现各种功能和情况

    背景 在做小程序时,关于默认导航栏,我们遇到了以下的问题: Android.IOS 手机对于页面 title 的展示不一致,安卓 title 的显示不居中 页面的 title 只支持纯文本级别的样式控 ...

  2. char*转LPCWSTR【转载】

    文章转载自https://blog.csdn.net/zhouxuguang236/article/details/8761497 通过MultiByteToWideChar函数转换 MultiByt ...

  3. NX二次开发-打开文件夹,并同时选中指定文件

    NX9+VS2012 #include <uf.h> #include <uf_ui.h> #include <uf_part.h> #include <at ...

  4. centos7 开机自动执行shell脚本

    centos7 开机自动执行shell脚本 90十80 关注 2018.12.23 09:37 字数 309 阅读 485评论 0喜欢 0 自己新建一个脚本,如centnet-service.sh 经 ...

  5. Dijkstra with priority queue 分类: ACM TYPE 2015-07-23 20:12 4人阅读 评论(0) 收藏

    POJ 1511 Invitation Cards(单源最短路,优先队列优化的Dijkstra) //================================================= ...

  6. 图文形式分享网页到facebook (要求:可以多个图片切换选择)

    分享网页到facebook的功能很常见,之前都是简单的网页分享,没遇到什么砍儿.这次的需求相比之前有一丁点特殊,就是图片得是用户指定选择的. fb文档地址:https://developers.fac ...

  7. linux 下 CDH4.5编译

    1.安装JDK JDK:我这里 安装的是jdk1.6.0_23 1.1:给文件执行的权限chmod u+x jdk-6u23-linux-x64.bin 1.2: ./jdk-6u23-linux-x ...

  8. docker 挂载文件出错

    docker不能挂载文件,只能挂载文件夹,所以先从一个容器中复制一份配置文件. docker run --name test -d idp docker cp test:/app/appsetting ...

  9. Docker学习のDocker镜像

    一.列出镜像 命令:docker images [optsions] [repositort] -a 标识列出所有 -f  写过滤条件 --no-trunc  不截断id -q 只显示唯一id rep ...

  10. mysql 03章_完整性、约束

    .完整性:数据库中数据的可靠性有效性和合理性我们称为数据的完整性,这样才能保证数据合理符合现实生活中的数据体现. 注:数据完整性的设计应该在设计表的时候就进行设计了,而不是等到数据库中已经存在数据才进 ...