当前位置: 首页 > news >正文

SCUT - 161 - 灯游 - 数学

https://scut.online/p/161

很显然一个数被开关的概率是他的因子的个数的占比。

然后又很显然其实这个总的概率就是一个二项式求和。

模拟这个过程WA了8发。正常,毕竟浮点误差累积比较大。

其实这个既然是二项式的奇次项求和,那么可以像高中二项式定理一样通过给(x+y)^k代入正确的x和y消去不想要的项。

通过模拟是达不到公式的精度的。就算m很大好像也会有一些奇怪的bug。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

const int MAXN = 1000000;

int d[MAXN], a[MAXN], maxd;
int pri[MAXN], pritop;

bool notpri[MAXN];
void init1(int n = MAXN) {
    notpri[1] = d[1] = 1;
    for(int i = 2; i <= n; i++) {
        if(!notpri[i])
            pri[++pritop] = i, d[i] = 2, a[i] = 1;
        for(int j = 1; j <= pritop && i * pri[j] <= n; j++) {
            notpri[i * pri[j]] = 1;
            if(i % pri[j])
                d[i * pri[j]] = d[i] * d[pri[j]], a[i * pri[j]] = 1;
            else {
                d[i * pri[j]] = d[i] / (a[i] + 1) * (a[i] + 2);
                a[i * pri[j]] = a[i] + 1;
                break;
            }
        }
    }
    maxd = 240;
}
int n, m;

long double ans2[250], p, q;

void init2() {
    int c = min(n, maxd);
    for(int i = 1; i <= c; ++i) {
        p = (long double)i / (long double)n, q = 1.0 - p;
        if(m & 1)
            ans2[i] = (pow(p + q, m) + pow(p - q, m)) / (2.0);
        else
            ans2[i] = 1.0 - ((pow(p + q, m) + pow(p - q, m)) / (2.0));
    }
}

int main() {
#ifdef Yinku
    freopen("Yinku.in", "r", stdin);
#endif // Yinku
    init1();
    while(~scanf("%d%d", &n, &m)) {
        init2();
        for(int i = 1; i <= n; ++i)
            printf("%.8f%c", (double)ans2[d[i]], " \n"[i == n]);
    }
    return 0;
}

转载于:https://www.cnblogs.com/Yinku/p/11333747.html

相关文章:

  • service命令
  • JavaScript + ASP.NET
  • 用主机头名法实现一个IP建多个Web站点
  • SCUT - 484 - 平面上的点 - 数据结构
  • 财务软件的设计
  • SCUT - 483 - 数轴上的点
  • ruby on rails开发B/S的相关经验
  • Codeforces - 1202D - Print a 1337-string... - 构造
  • 通用权限管理系统组件 (GPM - General Permissions Manager) 中实现大数据的高效分页显示...
  • 《学习之道》第十六章左脑的作用
  • Entity Framework 4.3尝试体会
  • 英汉《营销学》常用词汇-1
  • opencv源码解析之(2):滤波前言2
  • 流媒体服务器搭建实例——可实现录音,录像功能
  • Redis之hash数据结构实现
  • hexo+github搭建个人博客
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【Linux系统编程】快速查找errno错误码信息
  • exports和module.exports
  • JavaScript DOM 10 - 滚动
  • Material Design
  • PHP的类修饰符与访问修饰符
  • SQLServer之创建数据库快照
  • Terraform入门 - 3. 变更基础设施
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • Vue 动态创建 component
  • vue--为什么data属性必须是一个函数
  • 基于 Babel 的 npm 包最小化设置
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 前端自动化解决方案
  • 使用putty远程连接linux
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #AngularJS#$sce.trustAsResourceUrl
  • #define用法
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (20050108)又读《平凡的世界》
  • (C语言)fgets与fputs函数详解
  • (C语言)共用体union的用法举例
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)php新闻发布平台 毕业设计 141646
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .jks文件(JAVA KeyStore)
  • .NET delegate 委托 、 Event 事件,接口回调
  • .net 获取url的方法
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .NET大文件上传知识整理
  • .net和jar包windows服务部署
  • ::什么意思
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [ JavaScript ] JSON方法
  • [2]十道算法题【Java实现】