[luogu p1069] 细胞分裂

别再死磕Excel了!用Vensim PLE免费版,30分钟搞定你的第一个系统动力学模型 本文介绍如何使用Vensim PLE免费版在30分钟内构建第一个系统动力学模型,无需编程或数学基础。通过个人储蓄增长案例,详细讲解因果回路图绘制、存量流量图创建及方程编写,帮助读者掌握动态系统建模与仿真技巧,适用于理财、项目管理等多种场景。 阅读详情

传送门

细胞分裂

题目描述

\(Hanks\)博士是\(BT\)(\(Bio-Tech\),生物技术) 领域的知名专家。现在,他正在为一个细胞实验做准备工作:培养细胞样本。

\(Hanks\)博士手里现在有\(N\)种细胞,编号从\(1-N\),一个第\(i\)种细胞经过\(1\)秒钟可以分裂为\(S_i\)个同种细胞(\(S_i\)为正整数)。现在他需要选取某种细胞的一个放进培养皿,让其自由分裂,进行培养。一段时间以后,再把培养皿中的所有细胞平均分入\(M\)个试管,形成\(M\)份样本,用于实验。\(Hanks\)博士的试管数\(M\)很大,普通的计算机的基本数据类型无法存储这样大的\(M\)值,但万幸的是,\(M\)总可以表示为\(m_1\)的\(m_2\)次方,即\(M = m_1^{m_2}\),其中\(m_1,m_2\)均为基本数据类型可以存储的正整数。

注意,整个实验过程中不允许分割单个细胞,比如某个时刻若培养皿中有\(4\)个细胞,\(Hanks\)博士可以把它们分入\(2\)个试管,每试管内\(2\)个,然后开始实验。但如果培养皿中有\(5\)个细胞,博士就无法将它们均分入\(2\)个试管。此时,博士就只能等待一段时间,让细胞们继续分裂,使得其个数可以均分,或是干脆改换另一种细胞培养。

为了能让实验尽早开始,\(Hanks\)博士在选定一种细胞开始培养后,总是在得到的细胞"刚好可以平均分入\(M\)个试管"时停止细胞培养并开始实验。现在博士希望知道,选择哪种细胞培养,可以使得实验的开始时间最早。

输入输出格式

输入格式

第一行,有一个正整数\(N\),代表细胞种数。

第二行,有两个正整数\(m_1,m_2\),以一个空格隔开,即表示试管的总数\(M = m_1^{m_2}\).

第三行有 N 个正整数,第 i 个数 Si表示第 i 种细胞经过 1 秒钟可以分裂成同种细胞的个数。

输出格式

一个整数,表示从开始培养细胞到实验能够开始所经过的最少时间(单位为秒)。

如果无论\(Hanks\)博士选择哪种细胞都不能满足要求,则输出整数\(-1\)。

输入输出样例

输入样例 #1

1
2 1
3

输出样例 #1

-1

输入样例 #2

2
24 1
30 12

输出样例 #2

2

说明

【输入输出说明】

经过\(1\)秒钟,细胞分裂成\(3\)个,经过\(2\)秒钟,细胞分裂成\(9\)个,......,可以看出无论怎么分裂,细胞的个数都是奇数,因此永远不能分入\(2\)个试管。

【输入输出样例\(2\)说明】

第\(1\)种细胞最早在\(3\)秒后才能均分入\(24\)个试管,而第\(2\)种最早在\(2\)秒后就可以均分(每试管\(144/(241)=6\)个)。故实验最早可以在\(2\)秒后开始。

【数据范围】

对于 50%的数据,有\(m_1^{m_2} ≤ 30000\)。

对于所有的数据,有\(1 ≤N≤ 10000,1 ≤m_1 ≤ 30000,1 ≤m_2 ≤ 10000,1 ≤ S_i ≤ 2,000,000,000\)。

NOIP 2009 普及组 第三题

分析

此题 \(M\) 非常大,因此如果你暴力满分我直接吃屏。观察一下题面,很显然能看出是一道数论。

先抛弃最小值不谈,来对单独一个细胞进行分析。假设这个细胞分裂能力是 \(s\),那么我们要求的就是满足 \(s ^ t | M\) 中 \(t\) 的最小值。

首先先将 \(s\) 和 \(M\) 质因数分解。(\(m_1\) 中若含有 \(P\) 个质因数 \(p\),那么 \(M = m_1 ^ {m_2}\) 中就有 \(m_2P\) 个质因数 \(p\),因此把 \(m_1\) 质因数分解,然后对每个质因数数量乘上 \(m_2\) 即可。这也正是为什么 \(M\) 总能表示为 \(m_1 ^ {m_2}\) 的情形。)

设 \(p\) 为 \(s\) 和 \(M\) 的一个共同质因数,\(s\) 中包含 \(s_p\) 个 \(p\),\(M\) 中包含 \(M_p\) 个 \(p\),那么若想让 \(s ^ t | M\),就必须满足 \(t \ge \left\lceil\dfrac{M_p}{s_p}\right\rceil\)。这样,枚举 \(p\),找到 \(\left\lceil\dfrac{M_p}{s_p}\right\rceil\) 的最大值,那么 \(t\) 值自然就是这个最大值了。

什么时候无解呢?

对于一个质数 \(p\),定义 \(s_p\) 为 \(s\) 中 \(p\) 因数的数量,\(M_p\) 为 \(M\) 中 \(p\) 因数的数量。若存在一个质数 \(p\),使得 \(s_p = 0\) 且 \(M_p \ne 0\),那么不存在 \(t\) 使得 \(s ^ t | M\)。

最后,对每个 \(s\) 都进行上次的操作,在得到的 \(t\) 值中找到最小值即可。

如果所有都是无解的,那么答案自然就是 \(-1\) 咯。

上代码:

代码

/*
 * @Author: crab-in-the-northeast 
 * @Date: 2020-10-02 20:06:20 
 * @Last Modified by: crab-in-the-northeast
 * @Last Modified time: 2020-10-02 21:52:59
 */
#include <iostream>
#include <cstdio>
#include <cstring>
#include <climits>

const int maxm1 = 30005;

int prime_num[maxm1], cnt;
bool isprime[maxm1];

void prime(int n) {
    std :: memset(isprime, true, sizeof(isprime));
    isprime[1] = false;
    for (int i = 2; i <= n; ++i) {
        if (isprime[i]) prime_num[++cnt] = i;
        for (int j = 1; j <= cnt && i * prime_num[j] <= n; ++j) {
            isprime[i * prime_num[j]] = false;
            if (i % prime_num[j] == 0) break;
        }
    }
}

int tube_prime[maxm1], cell_prime[maxm1];

int main() {
    int n, m1, m2, ans = INT_MAX;
    std :: scanf("%d", &n);
    std :: scanf("%d %d", &m1, &m2);

    prime(30000);
    for (int i = 1, div = m1; div != 1; ++i) {
        while (div % prime_num[i] == 0) {
            tube_prime[i] += m2;
            div /= prime_num[i];
        }
    }

    for (int i = 1; i <= n; ++i) {
        int s, need = 0;
        std :: scanf("%d", &s);
        std :: memset(cell_prime, 0, sizeof(cell_prime));
        for (int j = 1, div = s; j <= cnt; ++j) {
            while (div % prime_num[j] == 0) {
                ++cell_prime[j];
                div /= prime_num[j];
            }
        }

        bool valid = true;
        for (int j = 1; j <= cnt; ++j) {
            if (tube_prime[j] != 0 && cell_prime[j] == 0) {
                valid = false;
                break;
            }
            if (tube_prime[j] != 0) {
                int t = tube_prime[j] / cell_prime[j] + (tube_prime[j] % cell_prime[j] ? 1 : 0);
                if (t > need) need = t;
            }
        }

        if (valid && need < ans) ans = need;
    }

    if (ans == INT_MAX) puts("-1");
    else std :: printf("%d\n", ans);
    return 0;
}

评测记录

评测记录

DRV8870电机驱动芯片原理与嵌入式多平台驱动开发 H桥电机驱动芯片是直流电机控制的核心硬件模块,其通过双MOSFET拓扑实现方向与速度的精确调控。工作原理基于电荷泵自举驱动、集成电流检测及多重硬件保护机制,技术价值体现在高集成度、宽压适配(4.5V–45V)与强鲁棒性。典型应用场景涵盖智能机器人执行器、工业自动化设备及电池供电移动终端。本文围绕DRV8870这一主流驱动芯片,深入解析其PH/EN与Dual PWM双控制模式、nFAULT故障响应机制,并结合Arduino/ESP32/STM32三大平台,提供可复用的跨MCU驱动库设计范式与FreeRTOS实 阅读详情

相关推荐

Windows下Python安装geopandas全攻略:解决GDAL依赖问题的5个关键步骤

本文详细解析了在Windows系统下安装Python地理空间分析库geopandas时,如何有效解决其核心依赖GDAL的编译难题。文章提供了五个关键步骤,包括理解依赖关系、获取预编译wheel文件、顺序安装及环境验证,旨在帮助用户绕过复杂的C++编译环境,顺利完成geopandas的安装部署。

weixin_28221501的博客 283

Java 细胞分裂问题

例如:随着互联网的不断发展,Java这门技术也越来越重要,很多人都开启了Java的学习之路,本文就介绍了用Java语言解决细胞分裂问题。以上就是今天要讲的内容,本文仅仅简单介绍了Java的使用,此外Java 语言的风格很像 C 语言和C++语言,是一种纯粹的面向对象语言,它继承了 C++ 语言面向对象的技术核心,但是拋弃了 C++ 的一些缺点,比如说容易引起错误的指针以及多继承等,同时也增加了垃圾回收机制,释放掉不被使用的内存空间,解决了管理内存空间的烦恼。

Answer的博客 1209

PyQt5 使用QSqlDatabase连接Mysql数据库时Driver not loaded Driver not loaded

PyQt5 使用QSqlDatabase连接Mysql数据库时Driver not loaded Driver not loaded

睡觉不打呼噜的博客 1562

细胞分裂

D- 细胞分裂 题目链接 题意: ​ 输入 n,表示有n种细胞,数量为S-i,每秒分裂一次,每次分裂后的数量为原来的S-i倍。输入m1,m2,m1^m2表示试管个数。输入n种细胞最初始状态下的数量S-i。求哪一种细胞,经过最短的天数后,能过均匀的分布在所有试管中。输出最短天数。 解题思路: ​ 由于由于级数过大。可以考虑质因数分解做法。将m1质因数分解,并保存所有质因数的个数与m2相乘的结果。m1m2即等于,所有m1所有质因数(个数*m2)的乘积。 ​ 同理,将细胞初始状态数,进行质因数分解,并记录每一个质

weixin_42482617的博客 506

批量读取_MCGS触摸屏如何实现批量读取modbus数据的方法?

前两天,在一个QQ群里,有同行的朋友问,在MCGS中如何实现批量读取数据,因为他当时面临设备,通讯协议才是MODBUS RTU,同时厂家说地址不能分开读,必须是连续的。鉴于他提供的消息是能够设置的地方都试过了。为此,我直接告诉通过脚本,批量读取的方案。那么这个方案究竟如何实现?且看我下面慢慢道来。一、工具1.modsim:仿真PLC或者第三方设备。2.MCGS组态软件3.串口软件:在电脑中生成两不...

weixin_32511509的博客 8159

用Seurat和ComplexHeatmap绘制单细胞marker基因热图:从数据处理到可视化全流程

本文详细介绍了使用Seurat和ComplexHeatmap绘制单细胞marker基因热图的全流程,涵盖从数据处理、基因筛选、平均表达矩阵计算到高级可视化与注释添加。重点解析了如何利用ComplexHeatmap生成发表级热图,并整合热词信息,解决单细胞数据可视化中的常见问题,提升科研图表质量。

weixin_29048775的博客 528

Java:细胞分裂

题意: 有一种细胞,从诞生·第二天开始就能每天中午分裂出一个新的细胞,新的细胞在第二天又开始繁衍。每个细胞分裂两个细胞后将会死亡。假设在第一天,有一个这样的细胞,请问,在第 N 天晚上,细胞的数量是多少?输入一个整数 N(0 < N < 20),请编程求解第 N 天该细胞的数量。 思路: step1:细胞分裂; step2:细胞死亡;...

Time_Point的博客 3691

微机原理-基于8086电压报警2.5V仿真系统设计

*单片机设计介绍,微机原理-基于8086电压报警2.5V仿真系统设计。

2201_75940997的博客 1082

Luogu P1069细胞分裂【分解质因数/数论】By cellur925

题目传送门 发现这题真的坑超多啊...调了一晚上终于过了...我好菜啊qwq。 题意说的比较明白,让你求满足(si^k)%(m1^m2)==0的最小k值。然后看数据范围我们知道,我们肯定不能暴力的判断,需要应用到算术基本定理的内容。 我的思路:把m1分解质因数,拆成算术基本定理的形式,再把每个质因数的个数乘上m2.      之后对于每个细胞,我们也将他分解质因数。显然,m1的质因数在si...

weixin_30781433的博客 170

使用Google Earth Engine下载JRC全球水体数据

通过Google Earth Engine平台和提供的源代码,研究人员和水资源管理者可以方便地获取和利用这一重要的水资源监测数据集,从而开展相关的研究和决策支持工作。要使用Google Earth Engine下载JRC全球水体数据,首先需要在Google Earth Engine平台上进行注册和登录。JRC全球水体数据是由欧洲联合研究中心开发的高分辨率全球水体分类数据集,覆盖了整个地球的陆地和水域。下载完成后,你可以使用各种遥感数据处理软件来打开和分析这些数据,以满足不同的研究和应用需求。

LrlDebug的博客 1157

C++高级数据结构算法 | 二叉树的四种遍历算法详解(递归与非递归实现)

二叉树遍历方法 、前序遍历算法 、中序遍历算法 、后序遍历算法 、层序遍历算法

ZY-JIMMY 2562

MY TESTS

励志整理所有的n次考试的博客: 【五一qbxt】test1 【五一qbxt】test2 【校内test】桶哥的问题 【6.10校内test】 noip模拟 6.12校内test 【6.12校内test】T1单词序列 【6.12校内test】T2 子集 【6.12校内test】T3 城市交通费 6.18校内test(最近考试可是真勤)题目均来源于luogu 【6.18校内...

weixin_30919919的博客 120

详解FreeRTOS:事件标志组(高级篇—5)

事件组可以实现一对多,多对多的同步,即一个任务可以等待多个事件的发生。任务可以通过设置事件位来实现事件的触发和等待操作,FreeRTOS的事件仅用于同步,不提供数据传输功能。

不脱发的程序猿 1073

洛谷 数论入门相关题目--2022.01.22

P2926 [USACO08DEC]Patting Heads S 拍头https://www.luogu.com.cn/problem/P2926 P3383 【模板】线性筛素数https://www.luogu.com.cn/problem/P3383 P1835 素数密度https://www.luogu.com.cn/problem/P1835 P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题https://www.luogu.com.cn/problem/P1029 P

青少年趣味编程 864

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Spring AI + GPT-5.5 + Ollama 配置教程:Base URL、超时与流式调用

由于不同 Spring AI、Spring Boot 小版本之间仍可能存在差异,创建项目时应检查 Spring Initializr、Spring AI BOM 和官方兼容矩阵,不要直接复制旧教程中的 Starter 名称和版本号。多人项目最好隔离不同客户端,并在脱敏前提下记录最终 URL、状态码、请求耗时、请求 ID 和模型 ID。Spring AI 接入模型 API,至少要同时确认 Starter、Base URL、请求路径、API Key、模型 ID、连接超时、读取超时和流式客户端这 8 项。

2601_95893075的博客 219

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 328

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【JVM】对象内存布局

HotSpot JVM 中,Java 对象内存布局由对象头(12字节,含Mark Word与压缩Klass Pointer)、实例数据及对齐填充构成,总大小为8字节倍数。对象头支持锁状态动态复用,指针压缩使引用仅4字节,但堆超32GB时失效。实例字段按类型优先级重排序以减少间隙,最小对象大小为16字节。通过JOL工具可精准验证布局,理解锁机制、GC、伪共享等底层行为。

2301_79732484的博客 148

Spring Boot 数据源与 MyBatis(-Plus) 自定义配置详解

本文详解 Spring Boot 中单数据源环境下 HikariCP 与 MyBatis-Plus 的自定义配置。通过手动声明 SqlSessionFactory,实现下划线转驼峰、日志输出、一级缓存策略等精细化控制。结合 HikariCP 核心参数调优(如最大连接数、连接生命周期),确保高性能与稳定性。适用于仅需访问单一数据库的场景,避免多数据源复杂性,兼顾性能与可维护性。

BADAO_LIUMANG_QIZHI的博客 192

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

要努力去发光,而不是被照亮~ 114

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 360

Decorator

TaskDecorator 是异步场景下"跨线程传递上下文"的标准方案,主要用于传递 MDC、用户信息、数据源路由等上下文数据,核心价值是让异步任务的日志链路不中断、业务上下文不丢失。TaskDecorator 是 Spring 提供的一个钩子接口,用于在异步任务执行前对 Runnable 进行包装,常用于跨线程传递上下文。如果你在项目中遇到具体的异步上下文传递问题,可以把代码贴出来,我帮你给出最合适的 Decorator 方案 👍。✅ 核心能力:在线程切换时,把"父线程的上下文"搬到"子线程"

wlwork66的博客 102

JDK 下载安装:装完 Java 提示「不是内部或外部命令」?环境变量没配

JDK 是写 Java 程序必须装的东西。它包含运行 Java 的虚拟机(JRE)和编译 Java 的编译器(javac)——装了它,能跑、.java文件能编译成可执行程序。免费,学习和小规模生产都不花钱。

科小怪的博客 623

数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南

Oracle 提供了ORA_ROWSCN伪列(System Change Number),记录最后修改行的 SCN,类似 PostgreSQL 的xmin。实践中通常仍使用 version 字段方案,逻辑与 MySQL 完全相同。-- Oracle:通过 ORA_ROWSCN 实现乐观锁-- 更新时比对 SCN// 自定义注解// AOP 切面@Aspect@Component@Slf4jtry {

yjc_1111的专栏 394
上一篇: 放球问题 学习笔记
下一篇: [luogu p3601] 签到题
「已注销」
博客等级 码龄7年 10粉丝 170原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值