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

题目地址: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次操作之后,留在黑板上的数的期望. 要求结果对109+7取模,若结果不是整数,则用分数表示,并对109+7取逆元. (1 ≤ n ≤ 1015, 1 ≤ k ≤ 104) 思路: 首先我们要知道,在模109+7的范围内,可以任意进行模109+7的加减乘除运算,因为一个给定的数值,它在模109+7条件下的值是唯一确定的. 然后我们只要正常地计算,在每次运算之后对109+7取模…
题意:现在有一个数写在黑板上,它以等概率转化为它的一个约数,可以是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…
传送门 比赛秒写完ABC结果不会D--最后C还fst了qwq 首先可以想到一个约数个数\(^2\)乘上\(K\)的暴力DP,但是显然会被卡 在\(10^{15}\)范围内因数最多的数是\(978217616376000=2^6 \times 3^4 \times 5^3 \times 7^2 \times 11 \times 13 \times 17 \times 19 \times 23 \times 29\),它有\(26880\)个因数 但是不难发现:在我们的答案中参与计算的只有约数个数函…
题意 题目链接 Sol 首先考虑当\(n = p^x\),其中\(p\)是质数,显然它的因子只有\(1, p, p^2, \dots p^x\)(最多logn个) 那么可以直接dp, 设\(f[i][j]\)表示经过了\(i\)轮,当前数是\(p^j\)的概率,转移的时候枚举这一轮的\(p^j\)转移一下 然后我们可以把每个质因子分开算,最后乘起来就好了 至于这样为什么是对的.(开始瞎扯),考虑最后的每个约数,它一定是一堆质因子的乘积,而每个质因子的概率我们是知道的,所以这样乘起来算是没问题的.…
更好的阅读体验 Description 给定一个数 \(n\),对它进行 \(k\) 次操作,每次将当前的数改为自己的因数,包括 \(1\) 和自己.写出变成所有因数的概率是相等的.求 \(k\) 次以后 \(n\) 期望会变成多少 Input 一行两个整数 \(n,k\) Output 一行一个整数代表答案 Hint \(1~\leq~n~\leq~10^{15}~,~1~\leq~k~\leq~10^4\) Solution Hello 2019! 我们考虑整个数字变化的树形图: 以 \(n…
题目链接: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$和$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 =…