[Luogu-CF1097D]

给定 \(n,k\)一共会进行 \(k\) 次操作 , 每次操作会把 \(n\) 等概率的变成 \(n\) 的某个约数

求操作 \(k\) 次后 \(n\) 的期望是多少

题解

\(f[i][j]\) 表示以某质数的 \(i\) 次方经过 \(j\) 次操作后的结果

发现答案是积性的 , 质因数分解后转移

\(f[n][k]∗f[m][k]=f[nm][k] (gcd(n,m)=1)\)

对于\(f[i][j]\)的转移 :

\(f[i][j]=\frac{1}{i+1}\sum_{k=0}^{i}f[k][j-1]\)

大胆猜测积性的性质 , 转化为质因数分解后求解

其实肯定要写出最基础的暴力才能发现一些性质 , 所以不管是什么题都要先把暴力打了再说 ; 积性函数这种猜想还是要打表证明一下

记忆化是一个神奇的东西

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#define inf 0x3f3f3f3f
#define int long long
#define p 1000000007
using namespace std; int dp[62][10002]; inline int power(int a,int t);
int inv(int n);
int solve(int a,int i,int j); signed main(){
int n,k,t,ans = 1;
scanf("%lld%lld",&n,&k);
for(int i=2;i*i<=n;++i){
if(n%i!=0) continue; //不是因数,跳过
t = 0;
while(n%i==0){
++t;
n /= i; //找到质因数,算幂次
}
memset(dp,0,sizeof(dp));
ans = (ans*solve(i,t,k))%p;
}
memset(dp,0,sizeof(dp));
if(n>1) ans = (ans*solve(n,1,k))%p; //最后可能剩下n>1,需要多算一遍
printf("%lld",ans);
return 0;
} inline int power(int a,int t){
int res = 1;
while(t){
if(t&1) res = res*a%p;
a = a*a%p;
t >>= 1;
}
return res;
} int inv(int n){
return power(n,1000000005);
} int solve(int a,int i,int j){
if(i==0){
dp[i][j] = 1; //p^0为1,经过多少次操作还是1
return 1;
}
if(j==0){
//0次操作的情况,即为原数
if(dp[i][j]==0) dp[i][j]=power(a,i);
return dp[i][j];
}
int ans = 0;
for(int k=0;k<=i;++k){
//套用上面的式子
if(dp[k][j-1]==0) dp[k][j-1] = solve(a,k,j-1);
ans = (ans+dp[k][j-1])%p;
}
return ans*inv(i+1)%p;
}

CF1097D Makoto and a Blackboard(期望)的更多相关文章

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

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

  2. CF1097D Makoto and a Blackboard(期望)

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

  3. CF1097D Makoto and a Blackboard

    题目地址:CF1097D Makoto and a Blackboard 首先考虑 \(n=p^c\) ( \(p\) 为质数)的情况,显然DP: 令 \(f_{i,j}\) 为第 \(i\) 次替换 ...

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

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

  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. Codeforces1097D. Makoto and a Blackboard(数论+dp+概率期望)

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

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

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

  9. codeforces1097D Makoto and a Blackboard 数学+期望dp

    题目传送门 题目大意: 给出一个n和k,每次操作可以把n等概率的变成自己的某一个因数,(6可以变成1,2,3,6,并且概率相等),问经过k次操作后,期望是多少? 思路:数学和期望dp  好题好题!! ...

随机推荐

  1. loadrunner添加load generator连接失败解决办法

    1.到防火墙设置里面“允许程序和功能通过windows防火墙”,然后添加Loadrunner Agent Procss,到列表中,在“专用”和“公用”打勾,然后重启一下LR和Loadrunner Ag ...

  2. JMS学习之理论基础

    本文代码使用ActiveMq5.6 一.什么是JMS JMS(Java Message Service,Java消息服务)是一组Java应用程序接口(Java API),它提供创建.发送.接收.读取消 ...

  3. Mysql中结果集(mysql_result)与Traversable

    对于MySQL应该也不是很陌生吧,我常常爱犯的以错误就是执行mysli_qurey()后就使用数据,忘记返回的是结果集了.而对于lSELECT,.SHOW, DESCRIBE . EXPLAINmys ...

  4. Qt资源整理ING

    QCustomPlot:图表库,开源, 链接地址http://www.qcustomplot.com/index.php/download 一些Qt的开发库:http://qt-project.org ...

  5. (转)unordered_map与map的对比(C++11新特性)

    unordered_map和map类似,都是存储的key-value的值,可以通过key快速索引到value.不同的是unordered_map不会根据key的大小进行排序, 存储时是根据key的ha ...

  6. CodeForces 427B Prison Transfer (滑动窗口)

    题意:给定 n, t, c 和 n 个数,问你在这 n 个数中有多少连续的 c 个数,并且这个 c 个数不大于 t. 析:很简单么,是滑动窗口,从第一个开始遍历,如果找到 c 个数,那么让区间前端点加 ...

  7. 手动安装Chrome截屏控件扩展-Xproer.ScreenCapture(ScreenCapture.crx)

    1.打开扩展面板,在地址栏中输入 chrome://extensions   或通过"扩展程序"菜单打开   2.将ScreenCapture.crx拖拽到此面板中   3.选择添 ...

  8. 【图解HTTP】第二章 简单的http协议

    简单的HTTP协议 针对HTTP协议结构进行讲解,主要使用HTTP/1.1版本. HTTP协议用于客户端和服务器端之间的通信 通过请求和响应的交换达成通信(从客户端开始建立通信,服务器端在没有接收到请 ...

  9. AC620教程 第十五节 8位7段数码管驱动设计与验证

    本章导读 电子系统中常用的显示设备有数码管.LCD液晶以及VGA显示器等.其中数码管又可分为段式显示(7段.米字型等)以及点阵显示(8*8.16*16等),LCD液晶的应用可以分为字符式液晶(1602 ...

  10. Integer.MIN_VALUE

    static int MAX_VALUE           值为 2^31-1 的常量,它表示 int 类型能够表示的最大值. static int MIN_VALUE           值为 - ...