题目链接

首先,光看题就觉得它很扯淡(你哪里来这么多的钱来买试管)

根据某位已经ak过ioi的名为ych的神仙说(一看就是数学题,一看就需要因式分解,emm,我果然没有发现美的眼睛qwq)

那么我们就根据ych神仙的思路找到了通往AC的道路

代码摘自(神仙的考试程序qwq)

#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<iomanip>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<time.h>
#include<queue>
#include<stack>
using namespace std;
inline int read()
{
int ans=;
char last=' ',ch=getchar();
while(ch<''||ch>'') last=ch,ch=getchar();
while(ch>=''&&ch<='') ans=ans*+ch-'',ch=getchar();
if(last=='-') ans=-ans;
return ans;
}
//首先这道题显然是道数学题(要不然这数据怎么玩)
//样例1的解释启发我们这道题可以通过分解质因数做
//这个题其实条件等价于求a^x=k(m1^m2)的最小x值
//我们可以对两边进行分解质因数
//发现如果方程有解,则m1中不能包含a中没有的质因子
//但是a1的质因子可以比m1多
//那么最小的x就是找到最大的次数差值
struct prime
{
int cnt,pn[],t[];
}p,q;//一个储存题目给的条件,一个储存判断
int n,m1,m2;
inline void fenjie(int t,prime& p)//质因数分解2
{
p.cnt=;
for(int i=;i*i<=t;++i)
{
if(!(t%i))
{
p.pn[++p.cnt]=i;//记录第cnt个约数
p.t[p.cnt]=;
do
{
t/=i;
++p.t[p.cnt];//次数
}while(!(t%i));
}
}
if(t>)
{
p.pn[++p.cnt]=t;
p.t[p.cnt]=;
}
}
int main()
{
freopen("cell.in","r",stdin);
freopen("cell.out","w",stdout);
n=read(),m1=read(),m2=read();
if(m1==) return cout<<<<endl,;//先判断一波特殊情况
fenjie(m1,p);//把m1分解,存到p里
int ans,x;
ans=-;
for(int i=;i<=n;i++)
{
x=read();
fenjie(x,q);
int maxn=,nxt=;
//我们用nxt来存储x的下一个质因子的序号
bool flag=false;
if(q.cnt>=p.cnt)
//只有要求判断的数的质因子的个数>=题目给的条件的质因子的个数才能继续
for(int j=;j<=p.cnt;j++)//枚举m1的每一个质因子
{
while(q.pn[nxt]<p.pn[j]&&nxt<=q.cnt)++nxt;
if(nxt>q.cnt||q.pn[nxt]>p.pn[j])break;//如果没有这个质因子就跳出
int f=p.t[j]*m2/q.t[nxt];
if((p.t[j]*m2)%(q.t[nxt])) f++;
//让这两个次数相等,因为有可能不整除,所以还要判断一下,相当于向上取整
if(maxn<f)maxn=f;//求最大值
if(j==p.cnt) flag=; //标记答案
else flag=;
}
if(flag&&(ans==-||ans>maxn))ans=maxn;
}
printf("%d\n",ans);
return ;
}

【洛谷P1069 细胞分裂】的更多相关文章

  1. 洛谷 P1069 细胞分裂 解题报告

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

  2. 洛谷—— P1069 细胞分裂

    https://www.luogu.org/problem/show?pid=1069#sub 题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家.现在,他正在为一个细 ...

  3. 洛谷 P1069 解题报告

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

  4. P1069 细胞分裂

    P1069 细胞分裂 考虑质因数分解 先将m1,质因数分解后再根据数学定理将所有质数的质数全乘m2 然后将输入的数据相同处理,再判断 顺便说一下判断规矩 1肯定不行 如果分解后有没有m1质因数分解中的 ...

  5. P1069 细胞分裂——数学题,质因数分解

    P1069 细胞分裂 我们求的就是(x^k)|(m1^m2) k的最小值: 先给m1分解质因数,再给每个细胞分解: 如果m1有的质因数,细胞没有就跳过: 否则就记录答案: 注意整数除法下取整的原则: ...

  6. 细胞分裂(洛谷 P1069)

    题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家.现在,他正在为一个细胞实 验做准备工作:培养细胞样本. Hanks 博士手里现在有 N 种细胞,编号从 1~N,一个 ...

  7. luogu P1069 细胞分裂

    题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家.现在,他正在为一个细胞实 验做准备工作:培养细胞样本. Hanks 博士手里现在有 N 种细胞,编号从 1~N,一个 ...

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

    题目传送门 发现这题真的坑超多啊...调了一晚上终于过了...我好菜啊qwq. 题意说的比较明白,让你求满足(si^k)%(m1^m2)==0的最小k值.然后看数据范围我们知道,我们肯定不能暴力的判断 ...

  9. Solution -「HNOI 2007」「洛谷 P3185」分裂游戏

    \(\mathcal{Description}\)   Link.   给定 \(n\) 堆石子,数量为 \(\{a_n\}\),双人博弈,每轮操作选定 \(i<j\le k\),使 \(a_i ...

随机推荐

  1. POJ 3549 GSM phone(圆+扫描线+最短路)

    题目意思是求起点s到终点s的最短路,但是只能在圆的内部和边上走.一种可以想到的方法就是求出所有的交点,然后两两连边并验证合法性,但是这样的交点数规模有n2. 我们可以观察发现,我们在圆求并构成的图形中 ...

  2. Vue:Elementui中的Tag与页面其它元素相互交互的两三事

    前言 公司系统在用elementui做后台开发,不免遇到一些需要自己去根据原有的功能上,加一些交互的功能.今天来介绍下我在用elementUi里的Tag标签与多选框交互的过程,东西听上去很简单,但就是 ...

  3. python 如何解决高并发下的库存问题??

    python 提供了2种方法解决该问题的问题:1,悲观锁:2,乐观锁 悲观锁:在查询商品储存的时候加锁 select_for_update()  在发生事务的commit或者是事务的rollback时 ...

  4. [CodePlus 2018 3 月赛] 博弈论与概率统计

    link 题意简述 小 $A$ 与小 $B$ 在玩游戏,已知小 $A$ 赢 $n$ 局,小 $B$ 赢 $m$ 局,没有平局情况,且赢加一分,输减一分,而若只有 $0$ 分仍输不扣分. 已知小 $A$ ...

  5. 两个 DataTable 读取重复数据,dataTable1与dataTable2不同

    protected void Page_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Ad ...

  6. es5继承和es6类和继承

    es6新增关键字class,代表类,其实相当于代替了es5的构造函数 通过构造函数可以创建一个对象实例,那么通过class也可以创建一个对象实列 /* es5 创建一个person 构造函数 */ f ...

  7. 4.css3文本属性

    1.css3文本属性: ①Color:颜色. ②Text-align:文本水平对齐方式. ⑴Left默认值,right,center,justify两端对齐: ⑵新增start相当于left,end相 ...

  8. js实现完整轮播

    1.封装一个简单的动画函数 function animate(obj,target,callback){ clearInterval(obj.timer);//清除定时器防止定时器重复添加 obj.t ...

  9. Java 组件化(gradle)

    组件化什么是组件化,直接看下面两张图. 上面是非组件化的项目,下面是组件化的项目. 非组件化的问题如果项目本身有多个互相不影响的模块,甚至有多人分开负责各个模块的开发时,非组件化项目的弊端就会暴露出来 ...

  10. Oracle锁表信息处理步骤

    查看是否有锁表的sql select 'blocker(' || lb.sid || ':' || sb.username || ')-sql:' || qb.sql_text blockers, ' ...