CF1097D Makoto and a Blackboard(期望)
给定 \(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(期望)的更多相关文章
- cf1097D. Makoto and a Blackboard(期望dp)
题意 题目链接 Sol 首先考虑当\(n = p^x\),其中\(p\)是质数,显然它的因子只有\(1, p, p^2, \dots p^x\)(最多logn个) 那么可以直接dp, 设\(f[i][ ...
- CF1097D Makoto and a Blackboard(期望)
link 题目大意:给您一个数 n, 每次从n的所有约数(包含1.n)中等概率选出一个约数替换n,重复操作k次,求最后结果期望值%1e9+7. 题解:考虑暴力,我们设f(n,k)代表答案,则有f(n, ...
- CF1097D Makoto and a Blackboard
题目地址:CF1097D Makoto and a Blackboard 首先考虑 \(n=p^c\) ( \(p\) 为质数)的情况,显然DP: 令 \(f_{i,j}\) 为第 \(i\) 次替换 ...
- CF1097D Makoto and a Blackboard 积性函数、概率期望、DP
传送门 比赛秒写完ABC结果不会D--最后C还fst了qwq 首先可以想到一个约数个数\(^2\)乘上\(K\)的暴力DP,但是显然会被卡 在\(10^{15}\)范围内因数最多的数是\(978217 ...
- CF1097D Makoto and a Blackboard 质因数分解 DP
Hello 2019 D 题意: 给定一个n,每次随机把n换成它的因数,问经过k次操作,最终的结果的期望. 思路: 一个数可以表示为质数的幂次的积.所以对于这个数,我们可以分别讨论他的质因子的情况. ...
- D Makoto and a Blackboard
Makoto and a Blackboard time limit per test 2 seconds memory limit per test 256 megabytes input stan ...
- Codeforces1097D. Makoto and a Blackboard(数论+dp+概率期望)
题目链接:传送门 题目大意: 给出一个整数n写在黑板上,每次操作会将黑板上的数(初始值为n)等概率随机替换成它的因子. 问k次操作之后,留在黑板上的数的期望. 要求结果对109+7取模,若结果不是整数 ...
- 【DP】【CF1097D】 Makoto and a Blackboard
更好的阅读体验 Description 给定一个数 \(n\),对它进行 \(k\) 次操作,每次将当前的数改为自己的因数,包括 \(1\) 和自己.写出变成所有因数的概率是相等的.求 \(k\) 次 ...
- codeforces1097D Makoto and a Blackboard 数学+期望dp
题目传送门 题目大意: 给出一个n和k,每次操作可以把n等概率的变成自己的某一个因数,(6可以变成1,2,3,6,并且概率相等),问经过k次操作后,期望是多少? 思路:数学和期望dp 好题好题!! ...
随机推荐
- code1540 银河英雄传说
pa[i]代表i的father pre[i]代表i之前有多少个 sum[i]代表i所在的整列有多少个 cc为命令类型,x y为命令参数, fx fy分别为x y的father 当cc==‘M’时,合并 ...
- 随机抽样问题(蓄水池问题Reservoir Sampling)
转自:孤影醉残阳 http://hi.baidu.com/siyupy/item/e4bb218fedf4a0864414cfad 随机抽样问题(蓄水池问题Reservoir Sampling) 随即 ...
- 路飞项目背景,contentType以及django缓存
昨日回顾: 分页器: 普通分页 # 普通分页 from rest_framework.pagination import PageNumberPagination -每页的大小(默认) -查询的时候, ...
- dubbo获取错误ip
JAVA_OPTIONS="-Ddubbo.protocol.host=192.168.1.111
- asp.net web api 2框架揭秘文摘
第一章 概述 URI 统一资源标识符 URL 统一资源定位符 http方法:get,post,put,delete,head等 状态码:100-199,请求已被接受: 200-299,成功状态: 30 ...
- (转) c/c++调用libcurl库发送http请求的两种基本用法
libcurl主要提供了两种发送http请求的方式,分别是Easy interface方式和multi interface方式,前者是采用阻塞的方式发送单条数据,后者采用组合的方式可以一次性发送多条数 ...
- jQuar总结10:jQuery操作元素的属性
jQuery操作元素的属性 1 设置单个属性 //html <div></div> //js $('div').attr('id', 'box'); $('div').attr ...
- java中interface使用
1.在C++中,类可以多重继承,一个类可以有好几个父类,但是在java中,类是不允许多重继承的,为了多重继承,java中出现了接口(interface)的定义.接口是可以多重继承的,接口的关键词是:i ...
- Spring实战-README.md
教程 <Spring实战>(第四版),[美]Craig Walls著,张卫滨译 人民邮电出版社,2016.4 本系列博文包括: 第01章-Spring之旅 第02章-装配Bean 第03章 ...
- 【Android学习】Service&Boradcast初步
Service初步 掌握Service概念 掌握Service分类 Service开发能力具备 了解Service和intentService类的区别 重点难点 StartService和BoundS ...