题意:

给你两个数 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) ...      a b c....为他们的素因数

而其实也可以得知 f(n,r)=f(a^x,r)*f(b^y,r)*f(c^z,r) .....

比如 36 (2^2)*(3^2)  2和3的方案分开独立计算 如果最后2和3都是合理的 那么他们合起来的也是合理的

所以只需考虑只有单因子即可

根据公式其实是  由于u和v是除于2的 且若u v不同 交换位置算不同次数

于是可以列出dp方程式

i 代表系数 r代表层数

dp[i][r]=dp[1][r-1]+dp[2][r-2]+dp[3][r-3]....

即可以算出答案

#include <iostream>
#include <stdio.h>
#include <math.h>
#include <algorithm>
#include <queue>
#include <map>
using namespace std;
#define LL long long
#define MAX 1001000
#define MOD 1000000007
#define LIM 21LL dp[LIM][MAX];
int p[MAX];
int v[MAX];
int cnt;void init()
{for(int i=2;i<MAX;i++){if(!v[i]){v[i]++;p[cnt++]=i;}for(int j=0;p[j]*i<MAX&&j<cnt;j++){v[p[j]*i]=1;if(i%p[j]==0)break;}}dp[1][0]=1;for(int i=2;i<LIM;i++){dp[i][0]=2;}for(int i=1;i<MAX;i++)for(int j=1;j<LIM;j++)dp[j][i]=(dp[j-1][i]+dp[j][i-1])%MOD;}int main()
{init();int t,n,r;scanf("%d",&t);while(t--){scanf("%d%d",&r,&n);LL ans=1;int tmp=sqrt(n);for(int i=0;i<cnt&&tmp>=p[i];i++){if(n%p[i]==0){int x=1;while(n%p[i]==0){x++;n/=p[i];}ans=(ans*dp[x][r])%MOD;}}if(n!=1)ans=(ans*dp[2][r])%MOD;printf("%lld\n",ans);}return 0;
}

codeforces 757e Bash Plays with Functions相关推荐

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

    Description 定义f0(n)f_0(n)为满足p⋅q=n,gcd(p,q)=1p\cdot q=n,gcd(p,q)=1的有序对(p,q)(p,q)对数,定义fr+1(n)=∑u⋅v=nfr ...

  2. 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)=\s ...

  3. [Codeforces757E]Bash Plays with Functions数学

    这题推一吨东西出来就能做了 首先发现 F0(x) F_0(x)是 2质因子个数 2^{质因子个数} 这个东西是完全积性函数,当然也是非完全积性函数 把式子化简,就能得到 Fr(x) F_r(x)也是非 ...

  4. [CodeForces757E]Bash Plays with Functions

    题意: 定义函数fr(n)fr(n)f_r(n)在r=0r=0r=0时为整数对(p,q)(p,q)(p,q)满足p∗q=np∗q=np*q=n且gcd(p,q)=1gcd(p,q)=1gcd(p,q) ...

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

    题目: 样例输入: 5 0 30 1 25 3 65 2 5 4 48 样例输出: 8 5 25 4 630 题意: 我们先来分析r=0的情况,假如我们现在求f0(n),n=p1^a1*p2^a2*- ...

  6. Codeforces 757B - Bash's Big Day(分解因子+hashing)

    757B - Bash's Big Day 思路:筛法.将所有因子个数求出,答案就是最大的因子个数,注意全为1的特殊情况. 代码: #include<bits/stdc++.h> usin ...

  7. [Easy] CodeForces - 897D Ithea Plays With Chtholly | 贪心博弈

    题目链接: http://codeforces.com/problemset/problem/897/D Description This is an interactive problem. Ref ...

  8. Codeforces 897D. Ithea Plays With Chtholly (交互)

    题目链接:D. Ithea Plays With Chtholly 题意: 给你n张纸,在纸上写字(在 1 - c之间)可以写m次数 (,).(主要是交互,让你判断) 题解: 首先,看到m>=n ...

  9. Codeforces D - Ithea Plays With Chtholly

    D - Ithea Plays With Chtholly 思路:考虑每个位置最多被替换c/2次 那么折半考虑,如果小于c/2,从左往右替换,大于c/2总右往左替换,只有小于这个数(从左往右)或者大于 ...

最新文章

  1. 使用×××版软件中常见的一些错误代码
  2. 大学计算机英语句子,大学英语作文万能句子
  3. 斯坦福大学陈丹琦等人解读机器阅读最新进展:超越局部模式匹配
  4. 【Python】《大话设计模式》Python版代码实现
  5. mysql2008r1_mysql8 参考手册-分区修剪
  6. 【CodeForces - 764D】Timofey and rectangles (四色定理 + 找规律 + 构造)
  7. 垃圾回收(三)-gc模块
  8. NopCommerce 2.5的部署
  9. 查看mysql表和数据库的大小
  10. [C#源码] 微信跳一跳POST修改分数漏洞
  11. 训练AI 玩王者荣耀,这算不算开挂?!(附源码)
  12. mysql根据身份证得到年龄_MySQL根据身份证获取省份 年龄 性别
  13. 计算机五笔教案ppt,计算机应用基础课件(五笔字型课件).ppt
  14. 基于java小区物业管理系统
  15. 计算机硬件单片机,计算机硬件单片机总结报告
  16. 内存、磁盘硬盘、软盘、光盘、磁盘驱动器的介绍
  17. TF-IDF算法详解与应用
  18. 网络共享中心的计算机名,网络和共享中心在哪?教你打开Windows电脑系统网络和共享中心5大方法...
  19. java公交路线查询微信小程序源码
  20. mac pe 制作教程

热门文章

  1. Qiyuan-接小球游戏3.0
  2. 【Docker学习笔记 三】Docker常用容器安装及图形化管理工具
  3. 自学2 MATLAB图形处理
  4. 集成科大讯飞语音合成
  5. 【Unity 实战100例】 教程 专栏《导航目录帖》带你深入学习Unity实战经验
  6. 红帽认证工程师(RHCE)的发展前景
  7. 连接Wifi时自动弹出登录页面是如何做到的?
  8. 苹果7无线网怎么连接电脑连接服务器,iPhone7怎么连接Wifi无线网络?苹果iPhone7 wifi和网络流量自动切换吗?...
  9. R语言分组求和,分组求平均值,分组计数
  10. Delphi7微信、支付宝扫码支付源码