Codeforces 1097D. Makoto and a Blackboard】的更多相关文章

传送门 首先考虑如果 $n$ 只有一个质因数的情况,即 $n=p^t$ 那么显然可以 $dp$ ,设 $f[i][j]$ 表示第 $i$ 步,当前剩下 $p^j$ 的概率 那么转移很简单: $f[i][j]=\sum_{k=j}^{t}\frac{f[i-1][k]}{k+1}$ ,然后可以发现 $f[i][j+1]$ 算的在 $f[i][j]$ 里面都会算到,那么可以把转移优化一下: $f[i][j]=f[i][j+1]+\frac{f[i-1][j]}{j+1}$ ,然后复杂度就很稳 现在考…
算是记一下昨天晚上都想了些什么 官方题解   点我 简单题意 给定两个正整数$n$和$k$,定义一步操作为把当前的数字$n$等概率地变成$n$的任何一个约数,求$k$步操作后的期望数字,模$1e9 + 7$. $$n \leq 10^{15}, k \leq 10^4$$ 我的思路 设$f(n, k)$表示$n$在$k$步操作之后的期望数字,假设$n$的约数有$m$个,分别为$d_1, d_2, \dots, d_m$,有递推式 $$f(n, k) = \frac{1}{m}\sum_{i =…
题目地址: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\) 分解质因数:…
Makoto and a Blackboard time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Makoto has a big blackboard with a positive integer nn written on it. He will perform the following action exactly k…
Makoto has a big blackboard with a positive integer n written on it. He will perform the following action exactly k times: Suppose the number currently written on the blackboard is v . He will randomly pick one of the divisors of v (possibly 1 and v)…
大意: 初始一个数字$n$, 每次操作随机变为$n$的一个因子, 求$k$次操作后的期望值. 设$n$经过$k$次操作后期望为$f_k(n)$. 就有$f_0(n)=n$, $f_k(n)=\frac{\sum\limits_{d|n}{f_{k-1}(d)}}{\sigma_0(n)}, k>0$. 显然$f_k(n)$为积性函数, $dp$算出每个素因子的贡献即可. #include <iostream> #include <sstream> #include <a…
题意:现在有一个数写在黑板上,它以等概率转化为它的一个约数,可以是1,问经过k次转化后这个数的期望值 题解:如果这个数是一个素数的n次方,那么显然可以用动态规划来求这个数的答案,否则的话,就对每个素因数求答案,再相乘 参考博客:https://www.cnblogs.com/birchtree/p/10234203.html ac代码: #include<bits/stdc++.h> #define ll long long #define pa pair<int,int> usi…
目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:传送门  Portal  原题目描述在最下面.  给一个数n,由k次操作.每次操作等概率的把n变成他的一个因数(\(1\leq x\leq n\)),问k次操作后得到的数的期望是多少. Solution: \(n = p1^{a1}*...*pm^{am}\) 积性函数: \(fk(n) = fk(p1^{a1})*...*fk(pm^{am})\) \(dp[j]\…
题目链接:http://codeforces.com/contest/1097/problem/D 题目大意:给你n和k,每一次可以选取n的因子代替n,然后问你k次操作之后,每个因子的期望. 具体思路:对于给定的n,我们可以将n转换为,n=p1^(k1)*p2^(k2)*p3^(k3)......,然后我们求期望的时候,我们可以求每个因子的期望,然后再将每个因子的期望相乘就可以了(积性函数的性质). 然后我们使用一个dp数组,dp[i][j]代表某一个因子,经过i次操作,出现j次的概率. 数学期…
题目链接:传送门 题目大意: 给出一个整数n写在黑板上,每次操作会将黑板上的数(初始值为n)等概率随机替换成它的因子. 问k次操作之后,留在黑板上的数的期望. 要求结果对109+7取模,若结果不是整数,则用分数表示,并对109+7取逆元. (1 ≤ n ≤ 1015, 1 ≤ k ≤ 104) 思路: 首先我们要知道,在模109+7的范围内,可以任意进行模109+7的加减乘除运算,因为一个给定的数值,它在模109+7条件下的值是唯一确定的. 然后我们只要正常地计算,在每次运算之后对109+7取模…