题目链接:Race to 1 Again - LightOJ 1038 - Virtual Judge (ppsucxtt.cn)
题意:给你个数n,然后随机选择n的一个因子,然后n除以其因子,求n变成1的次数的期望。
题目的分析我写在了一张纸上:

知道了这个之后我们就可以用n的因子来求出n的期望,注意一些细节,比如我们要求的不是因子的个数,而是因子的个数减一,下面是代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<queue>
#include<cmath>
using namespace std;
const int N=1e5+10;
double ans[N];
int main()
{
int T;
cin>>T;
for(int i=2;i<=N;i++)
{
int p=-1;
double sum=0;
int len=sqrt(i);
for(int j=1;j<=len;j++)
{
if(i%j==0)
{
p++;
sum+=ans[j]+1;
if(i/j!=j)
{
p++;
sum+=ans[i/j]+1;//当i/j等于i时,ans[i/j]=0,相当于没

这篇博客主要讨论了Raceto1Again-LightOJ1038-VirtualJudge问题的解决方案。内容涉及数学期望在解决因子问题中的应用,通过分析数的因子来计算它变成1所需步骤的期望次数。博主提供了详细的代码实现,解释了如何处理因子个数和期望值的关系,并给出了实例验证。
最低0.47元/天 解锁文章
260

被折叠的 条评论
为什么被折叠?



