题目链接

\(Description\)

  q次询问,每次给定r,n,求\(F_r(n)\)。

\[ f_0(n)=\sum_{u\times v=n}[(u,v)=1]\\
f_{r+1}(n)=\sum_{u\times v=n}\frac{f_r(u)+f_r(v)}{2}\]

\(Solution\)

  首先将\(f_r\)的式子化为

\[f_{r+1}(n)=\sum_{d|n}f_r(d)
\]

  即\(f_{r+1}(n)\)为\(f_r(n)\)与\(g(n)=1\)的狄利克雷卷积。

  因为n的所有质因子之间对\(f_0(n)\)的贡献是独立的,所以显然\(f_0(n)\)为积性函数(为什么我还是不懂。。),那么\(f_r(n)\)也为积性函数。

  于是可以对每个质因子单独计算,这样狄利克雷卷积就可以化成求和

\[f_{r+1}(p^k)=\sum_{i=0}^kf_r(p^i)
\]

  (\(p^k\)的所有因子即\(p^i,i=0,1,\ldots,k\))

  同时可以发现\(f_0(p^k)=[k\neq 0]+1\),即\(f_0(p^k)\)的值与因子p无关,只与次数有关。

  那么DP,用\(dp[i][j]\)表示\(f_i(p^j)\),则\(dp[i][j]=\sum_{k=0}^jdp[i-1][k]\)。

  询问时对\(n\)分解质因数即可。

#include<cmath>
#include<cstdio>
#include<cctype>
#define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++)
const int N=1e6+3,M=21,mod=1e9+7,MAXIN=1<<18; int r,n,f[N+3][21],Primes[100000],cnt;
char IN[MAXIN],*SS=IN,*TT=IN;
bool Not_Prime[N+3]; inline int read()
{
int now=0,f=1;register char c=gc();
for(;!isdigit(c);c=gc()) if(c=='-') f=-1;
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now*f;
}
#define Mod(a) (a>=mod)?a-=mod:0
void Init()
{
// Not_Prime[1]=1;
for(int i=2;i<N;++i)
{
if(!Not_Prime[i]) Primes[++cnt]=i;
for(int j=1;j<=cnt&&Primes[j]*i<N;++j)
{
Not_Prime[i*Primes[j]]=1;
if(!(i%Primes[j])) break;
}
}
f[0][0]=1;//f_r(p^0)=1
for(int i=1;i<M;++i) f[0][i]=2;
for(int sum=0,i=1;i<N;++i,sum=0)
for(int j=0;j<M;++j)
{
sum+=f[i-1][j], Mod(sum);
f[i][j]+=sum, Mod(f[i][j]);
}
}
int Solve(int r,int n)
{
int ans=1,m=sqrt(n+0.5);
for(int i=1;i<=cnt&&Primes[i]<=m;++i)
{
if(n%Primes[i]) continue;
int t=0;
while(!(n%Primes[i])) n/=Primes[i],++t;
ans=1LL*ans*f[r][t]%mod;
}
if(n>1) ans=1LL*ans*f[r][1]%mod;//本身是个质数
return ans;
} int main()
{
//#ifndef ONLINE_JUDGE
// freopen("757.in","r",stdin);
//#endif Init();
int t=read(),r,n;
while(t--)
r=read(),n=read(),printf("%d\n",Solve(r,n));
return 0;
}

Codeforces757E.Bash Plays With Functions(积性函数 DP)的更多相关文章

  1. Codeforces E. Bash Plays with Functions(积性函数DP)

    链接 codeforces 题解 结论:\(f_0(n)=2^{n的质因子个数}\)= 根据性质可知\(f_0()\)是一个积性函数 对于\(f_{r+1}()\)化一下式子 对于 \[f_{r+1} ...

  2. CF 757E Bash Plays with Functions——积性函数+dp+质因数分解

    题目:http://codeforces.com/contest/757/problem/E f0[n]=2^m,其中m是n的质因子个数(种类数).大概是一种质因数只能放在 d 或 n/d 两者之一. ...

  3. CF 757 E Bash Plays with Functions —— 积性函数与质因数分解

    题目:http://codeforces.com/contest/757/problem/E 首先,f0(n)=2m,其中 m 是 n 的质因数的种类数: 而且 因为这个函数和1卷积,所以是一个积性函 ...

  4. Bash Plays with Functions CodeForces - 757E (积性函数dp)

    大意: 定义函数$f_r(n)$, $f_0(n)$为pq=n且gcd(p,q)=1的有序对(p,q)个数. $r \ge 1$时, $f_r(n)=\sum\limits_{uv=n}\frac{f ...

  5. Makoto and a Blackboard CodeForces - 1097D (积性函数dp)

    大意: 初始一个数字$n$, 每次操作随机变为$n$的一个因子, 求$k$次操作后的期望值. 设$n$经过$k$次操作后期望为$f_k(n)$. 就有$f_0(n)=n$, $f_k(n)=\frac ...

  6. codeforces757E. Bash Plays with Functions(狄利克雷卷积 积性函数)

    http://codeforces.com/contest/757/problem/E 题意 Sol 非常骚的一道题 首先把给的式子化一下,设$u = d$,那么$v = n / d$ $$f_r(n ...

  7. D. Makoto and a Blackboard(积性函数+DP)

    题目链接:http://codeforces.com/contest/1097/problem/D 题目大意:给你n和k,每一次可以选取n的因子代替n,然后问你k次操作之后,每个因子的期望. 具体思路 ...

  8. Problem : 这个题如果不是签到题 Asm.Def就女装(积性函数dp

    https://oj.neu.edu.cn/problem/1460 思路:若n=(p1^a1)*(p2^a2)...(pn^an),则f(n,0)=a1*a2*...*an,显然f(n,0)是积性函 ...

  9. Codeforces 757 E Bash Plays with Functions

    Discription Bash got tired on his journey to become the greatest Pokemon master. So he decides to ta ...

随机推荐

  1. Django中全局Context处理器

    1.模板标签和模板变量 模板标签在{% %}中定义: {% if is_logged_in %} Thanks for logging in! {% else %} Please log in. {% ...

  2. AT91RM9200---SMC简介

    1.前言 SMC(Static Memory Controller)Atmel 9200静态存储控制器的简称,它可以产生信号来控制外部静态存储和外设.SMC可通过编程寄存器来进行配置. 它有8路片选和 ...

  3. java.sql.SQLException: ORA-28040: 没有匹配的验证协议(12c或者12c rac)

    1.plsql可以连接,java程序不能连接,报如下错误: 一直以来用的都是服务器上的Oracle数据库,今天改成连接本地Oracle 12c数据库是出问题了.hibernate连接Oracle12c ...

  4. tomcat apr

    背景 前面也提过了,这次是在linux下的实验.不要信广告,要看疗效.其实起不了都大作用. 转载 开始安装~    1)安装apr     tar zxvf apr-1.4.2.tar     cd ...

  5. echarts地图显示不正常问题

    echarts2内置地图,而echarts3无内置地图,需要自己下载并导入. 在刚开始接触地图的时候,使用dreamweaver来构建页面,使用的编码不是UTF-8 代码是按照官方的拷贝下来的(我使用 ...

  6. Android:Animation

    Android 之 Animation 关于动画的实现,Android提供了Animation,在Android SDK介绍了2种Animation模式:1. Tween Animation:通过对场 ...

  7. Java连接oracle数据库的两种常用方法

    1. 使用thin连接 由于thin驱动都是纯Java代码,并且使用TCP/IP技术通过java的Socket连接上Oracle数据库,所以thin驱动是与平台无关的,你无需安装Oracle客户端,只 ...

  8. 类(字符串型;日期时间型;Math)

  9. OneNET麒麟座应用开发之九:与SD卡通讯并保存数据

    由于需要记录的数据量比较大,而且有些时候,有的用户不方便实时上传数据,所以要求使用SD卡存储数据然后人工收取上传.为此我们选择了一种通用的SD卡读写器. 1.读卡器简介 该读卡器整合 SD 卡规范和 ...

  10. OCM_第四天课程:Section2 —》GC 的安装和配置

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...