博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA 11762 - Race to 1(概率)
阅读量:6004 次
发布时间:2019-06-20

本文共 884 字,大约阅读时间需要 2 分钟。

UVA 11762 - Race to 1

题意:给定一个n,每次随即选择一个n以内的质数,假设不是质因子,就保持不变,假设是的话。就把n除掉该因子,问n变成1的次数的期望值

思路:tot为总的质数。cnt为质因子个数,那么f(n)=(1cnt/tot)f(n)+f(n/prime)(1/tot),然后利用记忆化搜索去做就可以

代码:

#include 
#include
const int N = 1000005;int t, n, prime[N], pn = 0, vis[N];double f[N];void get_table() { for (int i = 2; i < N; i++) { if (vis[i]) continue; prime[pn++] = i; for (int j = i; j < N; j += i) vis[j] = 1; }}double dfs(int n) { if (f[n] != -1) return f[n]; f[n] = 0; if (n == 1) return f[n]; int tot = 0, cnt = 0; for (int i = 0; i < pn && prime[i] <= n; i++) { tot++; if (n % prime[i]) continue; cnt++; f[n] += dfs(n / prime[i]); } f[n] = (f[n] + tot) / cnt; return f[n];}int main() { get_table(); for (int i = 0; i < N; i++) f[i] = -1; int cas = 0; scanf("%d", &t); while (t--) { scanf("%d", &n); printf("Case %d: %.7lf\n", ++cas, dfs(n)); } return 0;}

转载地址:http://ggsmx.baihongyu.com/

你可能感兴趣的文章
Redis源码笔记-初步
查看>>
openssl编程入门(含完整可编译和运行示例)
查看>>
Core Data 应用程序实践指南(Core Data 应用程序实践指南)
查看>>
iOS 手机号码格式化,344格式
查看>>
mysql添加注释
查看>>
实验五 TCP传输及加解密
查看>>
Twisted网络编程入门
查看>>
mysql多表查询
查看>>
中介者模式c#(媒婆版)
查看>>
Mac的MySQL无法启动的原因
查看>>
最小生成树 普莱姆(prim)算法
查看>>
基于Tomcat7、Java、WebSocket的服务器推送聊天室
查看>>
python 杂记
查看>>
C# this关键字的四种用法(转)
查看>>
effective c/C++
查看>>
Ubuntu12.04更新openssl使用源码
查看>>
责任链模式
查看>>
谈赌博心理
查看>>
中国各个省市县的人口统计,echart展示
查看>>
纪念一下雅虎中国 - 关闭社区服务的通知截图
查看>>