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

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

Description

定义f0(n)为满足pq=n,gcd(p,q)=1的有序对(p,q)对数,定义fr+1(n)=uv=nfr(u)+fr(v)2,给出r,n,求fr(n)

Input

第一行一整数q表示用例组数,每组用例输入两个整数r,n(1q106,0r106,1n106)

Output

对于每组用例,输出fr(n),结果模109+7

Sample Input

5
0 30
1 25
3 65
2 5
4 48

Sample Output

8
5
25
4
630

Solution

首先证明f0(n)是积性函数,对(n,m)=1,对n,m素因子分解,n=pa11...pass,m=qb11...qbtt,则有piqj,将n拆成两个互素的数p,q,则p应该取pa11,pa22,...,pass的一个子集乘起来,故f0(n)=2s,进而f0(m)=2tf0(nm)=2s+t=f0(n)f0(m),故f0(n)是积性函数

如果fr(n)是积性函数,下面证明fr+1(n)是积性函数,fr+1(n)=uv=nfr(u)+fr(v)2=d|nfr(d)+fr(nd)2=12(d|nfr(d)+d|nfr(nd))=d|nfr(d)

fr+1(n)是积性函数,由数学归纳法,对于任意r0fr(n)是积性函数

n=pa11...pass,那么fr(n)=fr(pa11)fr(pa22)...fr(pass),即只要求出fr(pk)的值即可,其中p为素数

f0(pk)=2,k1,fr(1)=1,r0

fr(pk)=i=0kfr1(pi)=fr(pk1)+fr1(pk),r1,k1

预处理dp[k][r]=fr(pk),对于每次查询,得到n的素因子分解形式中的幂指数a1,a2,...,as,则答案即为i=1sdp[ai][r]

Code

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<ctime>
using namespace std;
typedef long long ll;
typedef pair<int,int>P;
const int INF=0x3f3f3f3f,maxn=1000005;
#define mod 1000000007
int dp[20][maxn];
void add(int &x,int y)
{
    x=x+y>=mod?x+y-mod:x+y;
}
void init(int n=19,int r=1e6)
{
    dp[0][0]=1;
    for(int i=1;i<=r;i++)dp[0][i]=1;
    for(int i=1;i<=n;i++)
    {
        dp[i][0]=2;
        for(int j=1;j<=r;j++)
            add(dp[i][j],dp[i][j-1]+dp[i-1][j]);
    }
}
vector<int>g[maxn]; 
void Solve(int n)
{
    int nn=n;
    for(int i=2;i*i<=n;i++)
        if(n%i==0)
        {
            int num=0;
            while(n%i==0)n/=i,num++;
            g[nn].push_back(num);
        }
    if(n>1)g[nn].push_back(1);
}
int main()
{
    init();
    int q,n,r;
    scanf("%d",&q);
    while(q--)
    {
        scanf("%d%d",&r,&n);
        if(n==1)printf("1\n");
        else
        {
            if(g[n].size()==0)Solve(n);
            int ans=1;
            for(int i=0;i<g[n].size();i++)ans=(ll)ans*dp[g[n][i]][r]%mod;
            printf("%d\n",ans);
        }
    }
    return 0;
}
Codeforces E. Bash Plays with Functions(函数DP) 链接 codeforces 题解 结论:\(f_0(n)=2^{n的质因子个数}\)= 根据质可知\(f_0()\)是一个函数 对于\(f_{r+1}()\)化一下式子 对于 \[f_{r+1} = \sum_{d|n}f_r(d)\] \(f_r+1\)可以看做\(f_r()\)和\(g(d)\)的狄利克雷卷因为\(f_0()\)函数,\(g(d)\)也是函数,由卷... 阅读详情

相关推荐

codeforces 757e Bash Plays with Functions

题意: 给你两个数 n和r  可以做r次分解 当r大于0 n可以分解成两个因子u和v   u*v=n   当r 等于0 n分解出的两个因子的gcd要为1 如题意所给的公式来计算最终结果 思路: 仔细观察 在 r相同的情况下 25 和 4  30和42  的答案是相同 是由于 他们的构成结构相同   即n=(a^x)*(b^y)*(c^z) ...

669

(Codeforce 757)E. Bash Plays with Functions(函数)

(Codeforce 757)E. Bash Plays with Functions(函数)

AC__dream的博客 298

bzoj E. Bash Plays with Functions

题意: 设f0,n=f0,n=f_{0,n}=将n分成两个互质的数的的方案数。 fr,n=∑fr−1,u+fr−1,v2(uv=n)fr,n=∑fr−1,u+fr−1,v2(uv=n)f_{r,n}=\sum_\frac{f_{r-1,u}+f_{r-1,v}}{2}(uv=n) 多组询问,每次给出r,nr,nr,n,求fr,nfr,nf_{r,n}对109+7109+710^9+7取模。...

fyc的博客 284

Codeforces 757E 函数

1.首先 百度学习函数定义 或者 wiki学multiplicative function

lchi1997的博客 717

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_{r-1}(u)+f_{r-1}(v)}{2}$. $q$组询问, 求$f_r(n)$的值模1e9+7. 显然可以得到$f_0(n)=2^{\omega(n)}$, 是函数...

weixin_30426065的博客 102

Codeforces757E.Bash Plays With Functions(函数 DP)

题目链接 \(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_...

weixin_30567225的博客 149

codeforces 757E】Bash Plays with Functions

【题目链接】:http://codeforces.com/problemset/problem/757/E 【题意】 给你q个询问; 每个询问包含r和n; 让你输出f[r][n]; 这里f[0][n]是n分解成两个数u,v的乘的个数; 这里u和v互质; 而f[r][n]当r>0时,有个递推式; 【题解】 那个递推式等价于 即n...

AWCXV 134

代码片段提取与重组:从文件分析到自动化汇编的完整解决方案

数据处理是计算机科学中的基础概念,涉及从各种来源收集、清洗和转换信息的技术原理。在文本处理领域,字符串匹配和模式识别是实现自动化处理的核心技术,其价值在于能够高效处理大量非结构化数据。特别是在代码管理和文档分析场景中,经常需要从混合格式文件中提取分散的代码片段。本文基于字符编码分析和表格数据管理两个关键技术点,详细介绍了如何通过环境准备、分步处理和验证策略,解决代码片段收集过程中断和残余字符比较的实际问题。通过实现可靠的断点检测机制和相似度匹配算法,结合pandas DataFrame进行结构化数据管理,最

350

CF 757 E Bash Plays with Functions —— 函数与质因数分解

题目:http://codeforces.com/contest/757/problem/E 首先,f0(n)=2m,其中 m 是 n 的质因数的种类数; 而且 因为这个函数和1卷,所以是一个函数,就可以每个质因子单独考虑; 而 f0(pq) = 2,对于每个质因子都一样! 所以可以 DP 预处理 而fr(n) = fr(p1e1) * fr(p2e2) * ......

aodan5477的博客 139

[数论]Codeforces 757E. Bash Plays with Functions

DescriptionDescriptionf0(n)fr+1==∑uv=n[(u,v)=1]1∗fr\begin{eqnarray} f_0(n)&=&\sum_{uv=n}[(u,v)=1]\\ f_{r+1}&=&1*f_r\\ \end{eqnarray}求fr(n)f_r(n)。SolutionSolution因为nn的所有质因子之间对f0(n)f_0(n)贡献是独立的,所以f0f_0是个

Vectorxj的博客 467

[Codeforces757E] : Bash Plays with Functions函数

传送门 这个东西在r=0的时候,就是 f0(n)=2(n的质因子个数)f_0(n)=2^{(n的质因子个数)} 然后这个东西明显是个函数 然后题目里给的式子其实就是代表fr+1=fr∗1f_{r+1}=f_r*1 然后因为f0和1f_0和1都是函数,那么当r∈Nr\in N时都满足frf_r是函数 然后我们有这样一个递推式dp[i][j]=∑jk=0dp[i−1][k]dp[

玫葵之蝶 434

Codeforces 757E Bash Plays with Functions

函数+动态规划

YHaX的博客 487

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

http://codeforces.com/contest/757/problem/E 题意 Sol 非常骚的一道题 首先把给的式子化一下,设$u = d$,那么$v = n / d$ $$f_r(n) = \sum_{d \mid n} \frac{f_{r - 1}(d) + f_{r - 1}(\frac{n}{d})}{2}$$ $$= \sum_{d\mid n} f_{...

weixin_34274029的博客 185

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

题目:http://codeforces.com/contest/757/problem/E f0[n]=2^m,其中m是n的质因子个数(种类数)。大概是一种质因数只能放在 d 或 n/d 两者之一。 然后应该发现因为 f0 是的,所以 fr 也是的!因为是卷得来的。 这样就能把每个质因数分开。对于每种质因数考虑 fr 的转移,则 f [ r ][ p^k ] = sigma(i:...

weixin_30414635的博客 102

Codeforces 757 E Bash Plays with Functions

Discription Bash got tired on his journey to become the greatest Pokemon master. So he decides to take a break and play with functions. Bash defines a functionf0(n), which denotes the number of way...

weixin_30364147的博客 167
上一篇: CodeForces 724 G.Xor-matic Number of the Graph(组合数学+dfs+线性基)
下一篇: CodeForces 768 F.Barrels and boxes(组合数学)
v5zsq
博客等级 码龄11年 501粉丝 2436原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值