CF1097D Makoto and a Blackboard(期望)
link
题目大意:给您一个数 n, 每次从n的所有约数(包含1、n)中等概率选出一个约数替换n,重复操作k次,求最后结果期望值%1e9+7。
题解:考虑暴力,我们设f(n,k)代表答案,则有f(n,k)=sum_{d|n}f(d,k-1)。f(n,0)=n。
我们发现如果把n分解质因数,最后结果就是所有质因子若干次方结果乘积(f是积性函数)。
分解质因数后,我们设g(n,k)代表p^n次方执行k次的结果,由于n是log级别的,所以可以直接dp了。
最后得到了p^0…p^n的分布,加起来乘到答案里就行了。
代码
#include <cstdio>
using namespace std;const int xkj = 1000000007;long long n, k, tmp;
long long d[30];
int p[30], tot;
int f[60], g[60], inv[60];int qpow(int x, int y)
{int res = 1;for (x %= xkj; y > 0; y >>= 1, x = x * (long long)x % xkj)if (y & 1) res = res * (long long)x % xkj;return res;
}int work(long long p, int m)
{for (int i = 0; i < m; i++) f[i] = 0;f[m] = 1;for (int t = 1; t <= k; t++){for (int i = 0; i <= m; i++) g[i] = 0;for (int i = 0; i <= m; i++){f[i] = f[i] * (long long)inv[i + 1] % xkj;for (int j = 0; j <= i; j++){g[j] = (g[j] + f[i]) % xkj;}}for (int i = 0; i <= m; i++) f[i] = g[i];}int res = 0, tmp = 1; p %= xkj;for (int j = 0; j <= m; j++) res = (res + f[j] * (long long)tmp % xkj) % xkj, tmp = tmp * p % xkj;return res;
}int main()
{scanf("%lld%lld", &n, &k); tmp = n;for (int i = 0; i < 60; i++) inv[i] = qpow(i, xkj - 2);for (int i = 2; i * (long long)i <= n; i++){if (tmp % i == 0){d[++tot] = i, p[tot] = 1, tmp /= i;while (tmp % i == 0) tmp /= i, p[tot]++;}}if (tmp > 1) d[++tot] = tmp, p[tot] = 1;int ans = 1;for (int i = 1; i <= tot; i++) ans = ans * (long long)work(d[i], p[i]) % xkj;printf("%d\n", ans);return 0;
}
转载于:https://www.cnblogs.com/oier/p/10596729.html
CF1097D Makoto and a Blackboard(期望)相关推荐
- Makoto and a Blackboard
Makoto and a Blackboard 题解 我们定义为n操作k次的期望个数,那么,其中x为d的约数个数. 而n的约数个数可以在的时间内求出,于是总时间就是. 对于一个质数n,答案是. 那么对 ...
- Codeforces Hello 2019 D. Makoto and a Blackboard[DP+数论+概率期望]
题意:给出n和k,n每次会等概率的变成n的一个因子,问这样k次以后的期望大小 每个质因子贡献独立,变成一个因子就相当于变了质因子的次数 所以分解质因数以后对每个质因子做dp #include < ...
- codeforces 1097 Hello 2019
又回来了.. A - Gennady and a Card Game 好像没什么可说的了. #include<bits/stdc++.h> using namespace std;char ...
- [NOI2005]聪聪与可可(期望dp)
题意:给一张无向图,有一只猫和一只老鼠,猫每秒会向老鼠的方向移动两个单位,若它们的距离为一,那么只会移动一个单位,老鼠会等概率向周围移动一步或不动,求猫抓到老鼠的期望时间. Solution luog ...
- 洛谷P4316 绿豆蛙的归宿(期望)
题意翻译 「Poetize3」 题目背景 随着新版百度空间的上线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 题目描述 给出一个有向无环图,起点为1终点为N,每条边都有一个长度,并且从起点出 ...
- LightOJ - 1038 Race to 1 Again 基础期望概率 dp
传送门 刚刚学习期望&概率 我们设数X的期望改变次数为P[X] 如果要求X的期望,很容易想到找x的因子; 可以得到下式 ,cnt为X因子个数,ai为X的因子 可以这么理解,当因子ai为1时, ...
- 强化学习(五) - 时序差分学习(Temporal-Difference Learning)及其实例----Sarsa算法, Q学习, 期望Sarsa算法
强化学习(五) - 时序差分学习(Temporal-Difference Learning)及其实例 5.1 TD预测 例5.1 回家时间的估计 5.2 TD预测方法的优势 例5.2 随机移动 5.3 ...
- 强化学习(一)- 强化学习介绍、Markov决策过程和贝尔曼期望方程
强化学习(英语:Reinforcement learning,简称RL)是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益.其灵感来源于心理学中的行为主义理论,即有机体如何在环境给 ...
- nyoj——297(期望)
GoroSort 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 Goro has 4 arms. Goro is very strong. You don't mess ...
最新文章
- 开关电源输出整流二极管
- oracle断开不活跃链接,活跃进程连接导致数据库迟迟未关闭
- 数据仓库ods层是啥意思_数据仓库和数据分层
- mysql改了排序规则不生效_Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题...
- Web开发中实用小工具
- R语言之随机数与抽样模拟篇
- Linux操作系统 和 Windows操作系统 的区别
- CCIE学习(18)——HSRP、VRRP和GLBP
- 撤销工作表保护密码忘记了怎么办?
- orcl导入dmp语句_oracle用imp导入dmp文件的方法
- 【CityHunter】Unity3D设计AR探索模式
- Cesium for UE4 4.27 demo实现代码
- 计算机毕业设计基于asp.net的旅游网站
- Edge 浏览器 URLSearchParams bug 修复
- 一分钟了解Mysql的间隙锁——《深究Mysql锁》
- ubuntu16.04 设置静态ip
- Mini CFA 考试练习题 Industry Overview
- 沪嘉杭共建G60科创走廊
- Unity摄像机视野切换
- 手把手教你做出数据可视化项目--波士顿矩阵模型