题目传送门

题目大意:

  给出一个n和k,每次操作可以把n等概率的变成自己的某一个因数,(6可以变成1,2,3,6,并且概率相等),问经过k次操作后,期望是多少?

思路:数学和期望dp  好题好题!!

  直接考虑n到因子很难做,所以要研究从n到因子的一些性质。

  如果一个数可以写成,p^c这样的形式,并且p是质数,那么如果把这个数进行上述的操作,他可以变成的形式必然是p^x(0<=x<=c),并且每个数的概率是平均的。

  所以对于这样的数,我们可以得出dp方程,i表示第几次操作,j表示p^j。

  dp[ i + 1 ][ j ] = dp[ i ][ x ] / (  j + 1 );( j <= x );

  但是不是每个数都能写成p^c的形式的,但是每个数都能写成  p1^c1  *  p2 ^c2  ……*pn ^ cn 的形式,所以我们就把一个数拆开,对每一个部分单独算期望,最后相乘,就是原来的期望了。

  好题好题!!

#include<bits/stdc++.h>
const int inf=0x3f3f3f3f;
using namespace std;
typedef long long ll;
const ll p=1e9+;
const int maxn=;
ll inv[maxn];
ll dp[][];
ll c[maxn],m[maxn];
int len;
ll n,k;
void getinv() {
inv[]=;
for(int i=; i<=; i++) {
inv[i]=(p-p/i)*inv[p%i]%p;
}
}
int main() {
cin>>n>>k;
getinv();
ll temp=n;
for(ll i=; i*i<=temp; i++) {
if(temp%i==) {
c[++len]=i;
while(temp%i==) {
temp/=i;
m[len]++;
}
}
}
if(temp!=)
c[++len]=temp,m[len]=; ll ans=;
for(int tep=; tep<=len; tep++) {
memset(dp,,sizeof(dp));
dp[][m[tep]]=;
for(int i=; i<=k; i++) {
for(int j=; j<=m[tep]; j++) {
for(int t=j; t<=m[tep]; t++) {
dp[i][j] = (dp[i][j]+dp[i-][t]*inv[t+]%p)%p;
}
}
} ll tmp=;
ll di=;
for(int j=; j<=m[tep]; j++) {
tmp+=di*dp[k][j]%p;
tmp%=p;
di*=c[tep];
di%=p;
}
ans=(ans*tmp)%p;
}
cout<<ans<<endl;
}

codeforces1097D Makoto and a Blackboard 数学+期望dp的更多相关文章

  1. Codeforces1097D. Makoto and a Blackboard(数论+dp+概率期望)

    题目链接:传送门 题目大意: 给出一个整数n写在黑板上,每次操作会将黑板上的数(初始值为n)等概率随机替换成它的因子. 问k次操作之后,留在黑板上的数的期望. 要求结果对109+7取模,若结果不是整数 ...

  2. lightoj1038(数学期望dp)

    题意:输入一个数N,N每次被它的任意一个因数所除 变成新的N 这样一直除下去 直到 N变为1 求变成1所期望的次数 解析: d[i] 代表从i除到1的期望步数:那么假设i一共有c个因子(包括1和本身) ...

  3. 【BZOJ4872】[Shoi2017]分手是祝愿 数学+期望DP

    [BZOJ4872][Shoi2017]分手是祝愿 Description Zeit und Raum trennen dich und mich. 时空将你我分开.B 君在玩一个游戏,这个游戏由 n ...

  4. BZOJ 1426: 收集邮票 数学期望 + DP

    Description 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且 买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡 ...

  5. CF1097D Makoto and a Blackboard(期望)

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

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

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

  7. CF708E-Student‘s Camp【数学期望,dp】

    正题 题目链接:https://www.luogu.com.cn/problem/CF708E 题目大意 有\(n*m\)的矩形网格,然后每次每行最左边和最右边的格子各有\(p=\frac{c}{d} ...

  8. 【CF712E】Memory and Casinos(数学 期望 DP)

    题目链接 大意 给出一个序列,当你在某个点时,有一个向右走的概率\(P_i\)(向左为\(1-P_i\)), 给出\(M\)个操作,操作有两类: 1 X Y Z:把\(P_X\)的值修改为\(\fra ...

  9. [题解]数学期望_luogu_P1850_换教室

    数学期望dp,题面第一次见很吓人,然而从CCF语翻译成人话就简单多了, 开始一般会想到用 f [ i ] [ j ]表示前 i 个课程申请 j 次的期望,然而其实会发现转移的时候还和上一次的情况有关( ...

随机推荐

  1. Cloudstack动态修改CPU、内存

    环境: CentOS6.4+Cloudstack4.2+xenserver 6.2 动态修改Cloudstack guest 内存.CPU 准备工作: 1.安装 xenserver tools工具包 ...

  2. Java后端WebSocket的Tomcat实现(转载)

    一.WebSocket简单介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了.近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通 ...

  3. Openssl genpkey命令

    一.简介 genpkey命令用于产生各种密钥(RSA.DSA.DH.EC等)的私钥值. 二.语法 openssl genpkey [-out filename] [-outform PEM | DER ...

  4. zend studio永久使用的方法

    安装时选择试用版,以后每天的剩余天数会减少,找到c盘->用户->administrator删除三个文件(.zend,.zend studio,.zs)即可,.zs往往是隐藏的,这时需要选择 ...

  5. zend studio中安装Emmet插件后迅速编写html的方法

    table>tr*3>th*1+td*3h1{hello}            <h1>hello</h1>a[href="xx.xxx.xxx(网址) ...

  6. JAVA的String 类【转】

    String类 1.String对象的初始化 由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下: String s = “abc”; s ...

  7. 代理(Proxy)模式

    代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的反问. * 抽象主题角色(Subject):声明了真实主题和代理主题的共同接口,这样一来在任何使用真实主题的地方都可以使用代理主题. * ...

  8. asp.net微信内置浏览器下Session失效

    问题记录:仅限安卓端微信内置浏览器,服务器集群设置了黏性Session,在Post请求时会强制走代理,导致出去的ip指向另一台服务器,黏性Session失效,用户状态无法保存. 目前想知道除了设置Se ...

  9. 使用Filter对POST和GET方式的请求参数的进行统一解码

    一.过滤器 二.自定义request类

  10. .Net Core 项目引用本地类库方式(一)

    最近了解到.NET Core 项目,引用本地类库DLL的方式有三种 1.非同解决方案下的引用,直接引用,浏览,找到对应的DLL,然后确定引用. 这种方式有个不好的地方就是,如果引用的DLL文件里面,也 ...