题目地址:CF1097D Makoto and a Blackboard

首先考虑 \(n=p^c\) ( \(p\) 为质数)的情况,显然DP:

令 \(f_{i,j}\) 为第 \(i\) 次替换后出现 \(p^j\) 的概率

边界:

\[f_{0,c}=1\]

状态转移方程:

\[f_{i,j}=\sum_{t=j}^{c} \frac{f_{i-1,t}}{t+1}\]

目标:

\[\sum_{j=0}^{c}\ f_{k,j}\ p^j\]

考虑一般情况,将 \(n\) 分解质因数:

\[n=\prod_{i=1}^{m} {p_i}^{c_i}\]

按照上述方法DP每个 \({p_i}^{c_i}\)

由于期望是积性函数,直接将所有答案乘起来即可 (我就是卡在这一步上,难受QWQ)

代码:

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int K = 10006, C = 56, P = 1000000007;
ll n, f[K][C], inv[C];
int k;
vector<pair<ll, int> > d;

void divide(ll n) {
    for (ll i = 2; i <= sqrt(n); i++)
        if (n % i == 0) {
            int c = 0;
            while (n % i == 0) {
                n /= i;
                ++c;
            }
            d.push_back(make_pair(i, c));
        }
    if (n > 1ll) d.push_back(make_pair(n, 1));
}

ll work(ll p, int c) {
    for (int i = 0; i <= k; i++)
        for (int j = 0; j <= c; j++)
            f[i][j] = 0;
    f[0][c] = 1;
    for (int i = 1; i <= k; i++)
        for (int j = c; j >= 0; j--)
            for (int t = j; t <= c; t++)
                f[i][j] = (f[i][j] + f[i-1][t] * inv[t+1] % P) % P;
    ll ans = 0, now = 1;
    for (int j = 0; j <= c; j++) {
        ans = (ans + f[k][j] * now % P) % P;
        now = now * p % P;
    }
    return ans;
}

int main() {
    inv[1] = 1;
    for (int i = 2; i < C; i++)
        inv[i] = -(P / i) * inv[P%i] % P;
    cin >> n >> k;
    divide(n);
    ll ans = 1;
    for (unsigned int i = 0; i < d.size(); i++)
        ans = ans * work(d[i].first, d[i].second) % P;
    cout << (ans + P) % P << endl;
    return 0;
}

CF1097D Makoto and a Blackboard的更多相关文章

  1. CF1097D Makoto and a Blackboard 积性函数、概率期望、DP

    传送门 比赛秒写完ABC结果不会D--最后C还fst了qwq 首先可以想到一个约数个数\(^2\)乘上\(K\)的暴力DP,但是显然会被卡 在\(10^{15}\)范围内因数最多的数是\(978217 ...

  2. cf1097D. Makoto and a Blackboard(期望dp)

    题意 题目链接 Sol 首先考虑当\(n = p^x\),其中\(p\)是质数,显然它的因子只有\(1, p, p^2, \dots p^x\)(最多logn个) 那么可以直接dp, 设\(f[i][ ...

  3. CF1097D Makoto and a Blackboard(期望)

    link 题目大意:给您一个数 n, 每次从n的所有约数(包含1.n)中等概率选出一个约数替换n,重复操作k次,求最后结果期望值%1e9+7. 题解:考虑暴力,我们设f(n,k)代表答案,则有f(n, ...

  4. CF1097D Makoto and a Blackboard(期望)

    [Luogu-CF1097D] 给定 \(n,k\)一共会进行 \(k\) 次操作 , 每次操作会把 \(n\) 等概率的变成 \(n\) 的某个约数 求操作 \(k\) 次后 \(n\) 的期望是多 ...

  5. CF1097D Makoto and a Blackboard 质因数分解 DP

    Hello 2019 D 题意: 给定一个n,每次随机把n换成它的因数,问经过k次操作,最终的结果的期望. 思路: 一个数可以表示为质数的幂次的积.所以对于这个数,我们可以分别讨论他的质因子的情况. ...

  6. D Makoto and a Blackboard

    Makoto and a Blackboard time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  7. 【DP】【CF1097D】 Makoto and a Blackboard

    更好的阅读体验 Description 给定一个数 \(n\),对它进行 \(k\) 次操作,每次将当前的数改为自己的因数,包括 \(1\) 和自己.写出变成所有因数的概率是相等的.求 \(k\) 次 ...

  8. CF1097D 【Makoto and a Blackboard】

    我们考虑对于一个\(N\),他如果变成了他的约数\(x\),那又会变成一个子问题 我们定义\(F(n, k)\)为n操作k次的期望个数 那么我们有\(F(n, k) =\sum_{x|n} F(x, ...

  9. CodeForces - 1097D:Makoto and a Blackboard (积性)

    Makoto has a big blackboard with a positive integer n written on it. He will perform the following a ...

随机推荐

  1. python之三元表达式、列表推导、生成器表达式、递归、匿名函数、内置函数

    目录 一 三元表达式 二 列表推到 三 生成器表达式 四 递归 五 匿名函数 六 内置函数 一.三元表达式 def max(x,y): return x if x>y else y print( ...

  2. 新建体(3):dbms_job下新建一个job定期自动执行存储过程

    http://blog.csdn.net/thinkscape/article/details/7411012http://java-admin.iteye.com/blog/231159sql窗口执 ...

  3. Mac 上有哪些比较有意思的小软件?

    文章素材来源:微博.新浪看点 收录于:风云社区(SCOEE)[提供mac软件下载] 更多专题,可关注小编[磨人的小妖精],查看我的文章,也可上[风云社区 SCOEE],查找和下载相关软件资源. (一) ...

  4. 信用评分卡 (part 3of 7)

    python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...

  5. Hadoop生态圈-Ambari控制台功能简介

    Hadoop生态圈-Ambari控制台功能简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在经历一系列安装过程之后(部署过HDP后我终于发现为什么大家喜欢用它了,部署比CDH简 ...

  6. java语音转文字

    用到的百度提供的api 需要把wav音频文件转成16k的频率,必须转,不转百度api解析不出来.显示音频文件不清晰错误.想要转化还必须要有ffmpeg程序,这个自己百度去下载.然后拿转好的文件扔到百度 ...

  7. UDP中的sendto 与recvfrom

    sendto 头文件: #include <sys/types.h>   #include <sys/socket.h> 定义函数: int sendto(int s, con ...

  8. 解决Lost connection to MySQL server during query错误方法

    昨天使用Navicat for MySQL导入MySQL数据库的时候,出现了一个严重的错误,Lost connection to MySQL server during query,字面意思就是在查询 ...

  9. 微信小程序入门教程(一)API接口数据记录

    今天测试用小程序调用API接口,发现有些数据打印都是对象,怎么全部打印详细点来 小程序代码: httpsearch: function (name, offset, type, cb) { wx.re ...

  10. 七、文件IO——I/O处理方式和文件锁

    7.1 I/O 处理方式 7.1.1 I/O处理的五种模型 阻塞I/O模型 若所调用的 I/O 函数没有完成相关的功能就会使进程挂起,直到相关数据到达才会返回.如 终端.网络设备的访问. 非阻塞模型 ...