[数论/质因数分解] 细胞分裂

[NOIP 2009] 细胞分裂 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家。现在,他正在为一个细胞实验做准备工作:培养细胞样本。Hanks 博士手里现在有 NN 种细胞,编号从 1-N1−N,一个第 ii 种细胞经过 11 秒钟可以分裂为 S_iSi​ 个同种细胞( S_iSi​ 为正整数)。现在他需要选取某种细胞的一个放进培养皿,让其自由分裂,进行培养。一段时间以后,再把培养皿中的所有细胞平均分入 MM 个试管,形成 MM 份样本,用于实验。Hanks 博士的试管数 MM 很大,普通的计算机的基本数据类型无 阅读详情
细胞分裂
From lx11111
描述 Description
Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家。现在,他正在为一个细胞实
验做准备工作:培养细胞样本。
Hanks 博士手里现在有N 种细胞,编号从1~N,一个第i 种细胞经过1 秒钟可以分裂为
Si 个同种细胞(Si 为正整数)。现在他需要选取某种细胞的一个放进培养皿,让其自由分裂,
进行培养。一段时间以后,再把培养皿中的所有细胞平均分入M 个试管,形成M 份样本,
用于实验。Hanks 博士的试管数M 很大,普通的计算机的基本数据类型无法存储这样大的
M 值,但万幸的是,M 总可以表示为m1 的m2 次方,即2
1
M = m1^m2 ,其中m1,m2 均为基本
数据类型可以存储的正整数。
注意,整个实验过程中不允许分割单个细胞,比如某个时刻若培养皿中有4 个细胞,
Hanks 博士可以把它们分入2 个试管,每试管内2 个,然后开始实验。但如果培养皿中有5
个细胞,博士就无法将它们均分入2 个试管。此时,博士就只能等待一段时间,让细胞们继
续分裂,使得其个数可以均分,或是干脆改换另一种细胞培养。
为了能让实验尽早开始,Hanks 博士在选定一种细胞开始培养后,总是在得到的细胞“刚
好可以平均分入M 个试管”时停止细胞培养并开始实验。现在博士希望知道,选择哪种细
胞培养,可以使得实验的开始时间最早。
输入格式 Input Format
输入文件名为 cell.in,共有三行。
第一行有一个正整数 N,代表细胞种数。
第二行有两个正整数 m1,m2,以一个空格隔开, 2
1
m m 即表示试管的总数M。
第三行有 N 个正整数,第i 个数Si 表示第i 种细胞经过1 秒钟可以分裂成同种细胞的个
数。
输出格式 Output Format
输出文件 cell.out 共一行,为一个整数,表示从开始培养细胞到实验能够开始所经过的
最少时间(单位为秒)。
如果无论 Hanks 博士选择哪种细胞都不能满足要求,则输出整数-1。
样例输入 Sample Input [复制数据]

样例输出 Sample Output [复制数据]

时间限制 Time Limitation
各个测试点1s
来源 Source

NOIP2009普及组 第三题


第一次见到这题,还是在三年前...


当时自己什么都不会...连题目都看不懂于是打了-1.....


题目可以抽象为一个数m1^m2


有n个数a1,a2,...,an 求其中使得 (ai^j)mod(m1^m2)最小的j的值


如果都不满足则输出-1


我们可以将m1分解质因数,并且用num1[i]统计第i个质数的次数


然后总的num1[i]=num1[i]*m2


对于读入的每个数x


我们同样将其分解质因数,用num2[i]表示。


如果x能满足要求。


那么显然对于每一个num1[i]<>0 都有 num2[i]<>0


ji 表示 对应一个质因数的次方使能满足条件


那么ji=  0                                  (num1[i]<=num2[i])


            num1[i] div num2[i]+1  (num1[i] mod num2[i]<>0)


            num1[i] div num2[i]      (num1[i] mod num2[i]=0)


最后的j=max(ji) 


对每个x算出j后,取其中最小的一个作为答案


如果所有的x都不满足则输出-1 


var n,i,m1,m2,t,x,ans,s,kk:longint;
    num1,num2:array[1..6000]of longint;
    a:array[1..6000]of longint;
    flag:boolean;

procedure prime;
var i,j:longint;
    flag:boolean;
begin
     t:=0;
     for i:=2 to 50000 do
     begin
         flag:=true;
         for j:=2 to trunc(sqrt(i)) do
         if i mod j=0 then begin flag:=false;break;end;
         if flag then begin inc(t);a[t]:=i; end;
     end;
end;

procedure work1(v:longint);
var i:longint;
begin
    fillchar(num1,sizeof(num1),0);
    for i:=1 to t do // if a[i]>v then break else
      begin
          while v mod a[i]=0 do
          begin
              inc(num1[i]);
              v:=v div a[i];
          end;
      end;
    for i:=1 to t do num1[i]:=num1[i]*m2;
  //  for i:=1 to t do  if num1[i]<>0 then writeln(a[i],' ',num1[i]);
end;

procedure work2(v:longint);
var i:longint;
begin
    for i:=1 to t do // if a[i]>v then break else
      begin
          while v mod a[i]=0 do
          begin
              inc(num2[i]);
              v:=v div a[i];
          end;
      end;
  //  for i:=1 to t do if num2[i]<>0 then  writeln(a[i],' ',num2[i]);
end;

function main:longint;
var i,k,s:longint;
    flag:boolean;
begin
    s:=0;flag:=false;
    for i:=1 to t do if a[i]>kk then break else
    begin
        if num1[i]<>num2[i] then begin flag:=false;break; end;
    end;
    if flag then exit(1);
    for i:=1 to t do
    begin
        if (num1[i]<>0)and(num2[i]=0) then exit(-1);
        if (num1[i]=0) then continue;
        if (num1[i]<=num2[i]) then begin if s<0 then s:=0; continue; end;
        if num1[i] mod num2[i]<>0 then
        begin
            k:=(num1[i] div num2[i]+1);
            if s<k then s:=k;
        end
        else begin
                 k:=num1[i] div num2[i];
                 if s<k then s:=k;
             end;
    end;
    exit(s);
end;


begin
    prime;
    readln(n);
    readln(m1,m2);
    work1(m1);
    ans:=maxlongint;
    flag:=true;
    for i:=1 to n do
    begin
        fillchar(num2,sizeof(num2),0);
        read(x);
        kk:=x;
        work2(x);
        s:=main;
        if s<>-1 then flag:=false;
        if (ans>s)and(s<>-1) then ans:=s;
    end;
    if flag then writeln(-1) else writeln(ans);
end.


          

1947:【09NOIP普及组】细胞分裂 return a*x;n=read();m1=read();m2=read();minx=1e9;return 0;i<=n;i<=n;i++){tot=0;m=m1;s=S[i];flag=1;t=0;while(m!=1){break;m/=ggbound;s=ggbound;t++;=1&&gc!=s){totq=0;tots=0;totq++;q/=gc;tots++;s/=gc; 阅读详情

相关推荐

信奥经典题P1069:质因数分解在细胞分裂问题中的C++实现与算法思维

质因数分解是数论与算法设计中的一项基础且核心的技术,其原理在于将任意大于1的整数唯一地表示为一系列质数的乘积。这一原理为解决涉及整除性、最大公约数与最小公倍数的问题提供了数学基础,具有重要的技术价值。在工程实践中,质因数分解常被用于优化算法效率,避免大数运算中的溢出问题,尤其在处理幂运算与整除判定时优势明显。其典型应用场景包括密码学、算法竞赛中的数论问题,以及需要对整数性质进行深入分析的编程任务。本文以信息学奥林匹克竞赛(信奥)中的经典题目“细胞分裂”(P1069)为例,深入探讨如何利用质因数分解技术,将看

weixin_30647423的博客 309

P1069 [NOIP2009 普及组] 细胞分裂题解

算术基本定理经典题目应用详解

m0_72674633的博客 1296

Skiplist,B,B+tree,LSM tree

SkipList 理解(如何实现): 即使是有序的链表,查找的时间复杂度也是O(n),但链表不能随机访问所以不适用于二分查找,使得查找的时间复杂度为O(logn)。 于是将有序链表和二分查找结合得到了SkipList,类似于二叉搜索树,这是一种以空间换时间的算法,通过在每个节点中增加向前的指针,从而提升查找效率(如下图所示)。 一开始如a所示,是一个有序的链表,时间复杂度O(n)。随后建立了e所示的SkipList,从最顶层往下查找,可以跳过许多元素,减少查找次数。 ​

weixin_45875458的博客 947

洛谷 P1069 细胞分裂

洛谷 P1069 细胞分裂 Description Hanks 博士是 BT (Bio−Tech,生物技术) 领域的知名专家。现在,他正在为一个细胞实验做准备工作:培养细胞样本。 Hanks博士手里现在有 N种细胞,编号从 1−N,一个第 i种细胞经过 1 秒钟可以分裂为Si个同种细胞(Si为正整数)。现在他需要选取某种细胞的一个放进培养皿,让其自由分裂,进行培养。一段时间以后,再把培...

aochongbi5356的博客 321

用ST25DV芯片+KiCad快速设计NFC标签天线:参数计算/脚本生成/实测优化全流程

本文详细介绍了使用ST25DV芯片和KiCad工具设计NFC标签天线的全流程,包括参数计算、脚本生成和实测优化。通过解析芯片等效工作原理和设计思路,帮助开发者避开常见陷阱,实现高效、可量产的天线设计。文章还提供了Python计算工具和KiCad自动化脚本,大幅提升设计效率和成功率。

jj890的博客 757

长安车机破解后能干啥?分享我的UNI-K车机安装第三方应用与优化体验实录

本文详细记录了长安UNI-K车机破解后的实用玩法与深度优化指南,包括安装第三方应用、导航体验升级、影音系统改造及系统美化等。通过工具箱和升级技巧,车主可以大幅提升用车体验,解锁更多隐藏功能。

weixin_33217202的博客 404

洛谷 【P1069 细胞分裂】 {求解质因子} 奋斗的珂珂~

题目描述 Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家。现在,他正在为一个细胞实验做准备工作:培养细胞样本。 HanksHanks 博士手里现在有 N种细胞,编号从 1−N,一个第 i种细胞经过 1 秒钟可以分裂为Si个同种细胞(Si为正整数)。现在他需要选取某种细胞的一个放进培养皿,让其自由分裂,进行培养。一段时间以后,再把培养皿中的所有细胞平均分入M个试管,形成M份样本,用于实验。Hanks 博士的试管数M很大,普通的计算机的基本数据类型无法存储这样大的M值,但万幸的是,M 总

cmk_chy的博客 572

特征提取神操作,登上Nature!计算速度狂提300%!

登上Nature!作者提出CVOCA,一种能同时处理数据的幅度和相位信息的卷积模型,在性能远超SOTA的同时,计算速度更是狂飙300%!实际上,作为机器学习和深度学习的核心技术,特征提取一直都是研究的热门!它直接影响着模型的准确性、计算效率、可解释性……同时,它也是我们改模型涨点,最好操作的部分!因为可切入点的真的非常之丰富,不管是轻量化、多尺度、时域与频域结合等,都能使模型性能得到提升!

2401_82426425的博客 4036

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

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

weixin_30781433的博客 170

51单片机 步进电机正反转控制+Proteus仿真

51单片机 步进电机正反转控制+Proteus仿真 Proteus仿真 实例代码 /*************** ******************/ #include <reg52.h> #define uint unsigned int #define uchar unsigned char uchar code FFW[]= { 0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09 }; uchar code REV[]= { 0x09,0x

perseverance51博客 2787

【2026OD新机考】【不定滑窗】20260415-API请求日志去重分析【Py/Java/C++/C/JS/Go六种语言OD真题】【欧弟算法】全网注释最详细分类最全的华子OD真题题解

中找到所有的连续的相同元素,同时统计对应的连续相同元素对应的值的平均值。:当右指针为第一个元素(没有前一个元素),或者右指针对应的元素。某微服务系统的日志监控平台需分析API调用记录,日志含大量。相等,说明当前元素仍然属于同一个相同元素窗口,将当前元素值。中的所有元素均相等,并且计算窗口和情况即可。请实现一个函数,对给定的日志数据去重合并处理。位置,表示开启一个新的窗口,此时需要重置窗口和。,为了优化重复的请求记录,存储和后续分析需对。:对应的响应时间数组(毫秒)。重新置为当前右指针的元素值。

weixin_48157259的博客 112

洛谷——P1069 [NOIP2009 普及组] 细胞分裂(分解质因数,唯一分解定理)

唯一分解定理是数论中一个非常重要且实用的定理,这个定理是注意描述的,任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积N=P1a1P2a2P3a3…此时,博士就只能等待一段时间,让细胞们继续分裂,使得其个数可以均分,或是干脆改换另一种细胞培养。为了能让实验尽早开始,Hanks 博士在选定一种细胞开始培养后,总是在得到的细胞“刚好可以平均分入。现在博士希望知道,选择哪种细胞培养,可以使得实验的开始时间最早。,可以看出无论怎么分裂,细胞的个数都是奇数,因此永远不能分入。

2301_77012063的博客 1572

某物data魔改与变种算法还原(含加解密Py纯算)

某物data加解密、设备指纹魔改、变异、自定义加密分析与纯算还原

吴秋霖的博客 1280

洛谷 P1069 [NOIP2009 普及组] 细胞分裂【分解质因数+预处理优化】

首先肯定不能暴力,因为数据非常大,无法用常规整数类型存储,但是可以知道的是m1,m2都是可以用常规数据类型存储的,同时我们知道的是任意一个数都可以分解为若干质因子的乘积,所以我们可以对m1进行质因数分解,就可以得出m1拥有的各种质因子的个数,假设m1拥有质因子2的个数为3,由于这里是m1^m2,所以说总共有质因子2的个数为3*m2,对于每个分解出来的质因子个数都乘以m2,就可以得到m1^m2的各种质因子的个数。第一行,有一个正整数 N,代表细胞种数。NOIP 2009 普及组 第三题。

lianxuhanshu_的博客 1434

深度学习实战87-高中数学自适应测试系统研究与应用研发,前后台页面设计

大家好,我是微学AI ,今天给大家介绍一下深度学习实战87-高中数学自适应测试系统研究与应用研发,前后台页面设计。高中数学自适应测试系统旨在通过精准评估学生能力,用最少的题目发现其薄弱环节,并提供定制化的学习计划,帮助学生快速提升成绩。同时,系统结合了AI大模型实现自动判卷、生成报告,减轻教师负担,并支持个性化作业布置,使教学更加高效。学生可以清晰了解自身学习状态,教师也能获得精准的学生画像,实现差异化教学。

微学AI的博客 444

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Noip2009 细胞分裂————质因数分解

题解:本题主要考查质因数分解。 简要题意:给n种细胞,m1m2m1^{m2}m1m2个试管,每种细胞每个1s内分裂成aia_iai​个,求将细胞均匀放进试管的最少时间,如果不能输出-1。 1.质因数分解:首先 1.如果A被B整除,那么B的质因子A全部包括。 2.A的n次方,不论n(n>0)有多大,质因子的种类永远等于A的质因子的种类,例:当A等于2,不论是2的多少次方,永远只有2这一种质因子...

wly1127的博客 786

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

[luogu p1069] 细胞分裂

传送门 细胞分裂 题目描述 \(Hanks\)博士是\(BT\)(\(Bio-Tech\),生物技术) 领域的知名专家。现在,他正在为一个细胞实验做准备工作:培养细胞样本。 \(Hanks\)博士手里现在有\(N\)种细胞,编号从\(1-N\),一个第\(i\)种细胞经过\(1\)秒钟可以分裂为\(S_i\)个同种细胞(\(S_i\)为正整数)。现在他需要选取某种细胞的一个放进培养皿,让...

crab_xbc的博客 731

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

细胞分裂

P1069 细胞分裂,NOIP 2009 普及组 第三题,有关素数的数论

欢迎您的光顾awa 338

P1069 细胞分裂(分解质因子)

P1069 细胞分裂 题目描述 给出两个数m1,m2m1,m2m1,m2和nnn个数s1,s2,....,sns_1,s_2,....,s_ns1​,s2​,....,sn​,试在sis_isi​中选取一个数使得m1m2∣(si)km_{1}^{m_2}|(s_i)^{k}m1m2​​∣(si​)k (m1m2m_{1}^{m_2}m1m2​​整除(si)k(s_i)^{k}(si​)k)中的kk...

仙都一普通市民的blog 491

【NOIP2009普及组复赛】 题3:细胞分裂

现在他需要选取某种细胞的一个放进培养皿,让其自由分裂,进行培养。此时,博士就只能等待一段时间,让细胞们继续分裂,使得其个数可以均分,或是干脆改换另一种细胞培养。现在博士希望知道,选择哪种细胞培养,可以使得实验的开始时间最早。博士在选定一种细胞开始培养后,总是在得到的细胞“刚好可以平均分入。注意,整个实验过程中不允许分割单个细胞,比如某个时刻若培养皿中有。共一行,为一个整数,表示从开始培养细胞到实验能够开始所经过的。很大,普通的计算机的基本数据类型无法存储这样大的。裂,细胞的个数都是奇数,因此永远不能分入。

lpstudio的博客 1224

信息学奥赛一本通 1947:【09NOIP普及组】细胞分裂 | 洛谷 P1069 [NOIP2009 普及组] 细胞分裂

ybt 1947:【09NOIP普及组】细胞分裂 洛谷 P1069 [NOIP2009 普及组] 细胞分裂每个整数x都可以进行质因数分解,写成公式为x=p1a1p2a2...pnanx = p_1^{a_1}p_2^{a_2}...p_n^{a_n}x=p1a1​​p2a2​​...pnan​​,其中p1∼pnp_1\sim p_np1​∼pn​都为s的质因数。本题可以抽象为:有数字s1,s2,...,sns_1,s_2,...,s_ns1​,s2​,...,sn​,s指其中的某个数字。看在这个数字序列中,

君义NOIP的博客 1297

【NOIP2009PJ】细胞分裂

题目描述 ​ Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家。现在,他正在为一个细胞实 验做准备工作:培养细胞样本。 ​ Hanks 博士手里现在有N 种细胞,编号从1~N,一个第i 种细胞经过1 秒钟可以分裂为 Si 个同种细胞(Si 为正整数)。现在他需要选取某种细胞的一个放进培养皿,让其自由分裂, 进行培养。一段时间以后,再把培养皿中的所有细胞平均分入M 个试管,形成M 份样本, 用于实验。Hanks 博士的试管数M 很大,普通的计算机的基本...

weixin_44113721的博客 611

【6.18校内test】T3细胞分裂

尽管T1T2很简单,但还是阻止不了我T3wa一片 细胞分裂【题目链接】 xcg同学有一个80pts的代码 他说他的代码和我的很像,可惜我比较笨,只有30pts 其实这道题考场上是想到要分解质因数了,然后我质数表都打好了,但是不知道怎么记录乱七八糟的东西,然后就只会打暴力惹qwq 代码能力还是有待提升啊qwq 关于思路,就是上面所说的分解质因数,我们在分解质因数时,也只需要分解m...

weixin_30454481的博客 279

#166-[分解质因数]细胞分裂

Description Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家。现在,他正在为一个细胞实验做准备工作:培养细胞样本。 Hanks 博士手里现在有N 种细胞,编号从1~N,一个第i 种细胞经过1 秒钟可以分裂为Si 个同种细胞(Si 为正整数)。现在他需要选取某种细胞的一个放进培养皿,让其自由分裂,进行培养。一段时间以后,再把培养皿中的所有细胞平均分入M 个试管,形...

2017gdgzoi999的博客 647
上一篇: [noip2009 T3][topsort+dp]最优贸易
下一篇: [二分]NOIP2011 day2 T2 聪明的质检员
UtralK
博客等级 码龄14年 3粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值