【P1069】 ---- 细胞分裂

链接
题意:
给N个细胞,细胞ai在t时刻的细胞数量为 ai^t ,要求 ai^t 能整除容器的数量 m1^m2 求t的最小值,如果不存在输出 -1 。
思路:
将 m1^m2 素数分解,根据每个数 ai 求出它们所需的最小的时间 t ,如果存在将 t 输出。

#include <cstdio>
using namespace std;
typedef long long ll;
ll x[30] = {0}, y[30] = {0};
ll min(ll a,ll b){
    return a < b ? a : b;
}
ll max(ll a,ll b){
    return a > b ? a : b;
}
ll compare(ll cnt,ll num){
    ll maxx = 0;
    for(ll j = 0; j < cnt; j ++){
        ll ans = 0;
        while(num % x[j] == 0){
            num /= x[j];
            ans ++;
        }
        if(ans == 0)return -1;
        maxx = max(maxx, y[j] / ans);
        if (y[j] % ans)maxx = max(maxx, y[j] / ans+1);;
    }
    return maxx;
}
int main() {
    ll N;
    scanf("%lld",&N);
    ll m1, m2;
    scanf("%lld%lld", &m1, &m2);
    ll cnt = 0;
    for(ll i = 2; m1 != 1; i ++) {
        if(m1 % i == 0) {
            while (m1 % i == 0) {
                x[cnt] = i;
                y[cnt] ++;
                m1 /= i;
            }
            cnt ++;
        }
    }
//    for(int i = 0;i < cnt; i ++)
//        printf("%d %d\n",x[i], y[i]);
    ll minn = -1;
    for(ll i = 0;i < cnt; i ++)
        y[i] *= m2;
    for(ll i = 0;i < N; i ++){
        ll num;
        scanf("%lld",&num);
        ll a = compare(cnt, num);
        if(a == -1)continue;
        if(minn == -1)minn = a;
        else minn = min(minn, a);
    }
    if(minn == -1)printf("-1\n");
    else printf("%lld\n", minn);
    return 0;
}

原文地址:https://www.cnblogs.com/Vagrant-ac/p/11785120.html

时间: 2024-08-15 04:00:29

【P1069】 ---- 细胞分裂的相关文章

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

P1069 细胞分裂 我们求的就是(x^k)|(m1^m2) k的最小值: 先给m1分解质因数,再给每个细胞分解: 如果m1有的质因数,细胞没有就跳过: 否则就记录答案: 注意整数除法下取整的原则: 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int maxn=30010; 6 int n,m1,m2; 7 int pre_p[ma

P1069 细胞分裂

题目描述 HanksHanks 博士是 BTBT ( Bio-TechBio−Tech ,生物技术) 领域的知名专家.现在,他正在为一个细胞实验做准备工作:培养细胞样本. HanksHanks 博士手里现在有 NN 种细胞,编号从 1-N1−N ,一个第 ii 种细胞经过 11 秒钟可以分裂为 S_iSi? 个同种细胞( S_iSi?为正整数).现在他需要选取某种细胞的一个放进培养皿,让其自由分裂,进行培养.一段时间以后,再把培养皿中的所有细胞平均分入 MM 个试管,形成 MM 份样本,用于实验

细胞分裂(洛谷 P1069)

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

【NOIP2009】第三题&#183;细胞分裂

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

1152 细胞分裂

1152 细胞分裂 2009年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家.现在,他正在为一个细胞实验做准备工作:培养细胞样本.Hanks 博士手里现在有N 种细胞,编号从1~N,一个第i 种细胞经过1 秒钟可以分裂为Si 个同种细胞(Si 为正整数).现在他需要选取某种细胞的一个放进培养皿,让其自由分裂,进行培养.一段时间以

2952 细胞分裂 2

2952 细胞分裂 2 时间限制: 2 s 空间限制: 16000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 著名生物学家F博士发现了一种单细胞生物. 它长得像蚯蚓,分裂速度极快(每分钟一次),分裂也像蚯蚓一样,断成两段,再长成. 它很好斗,只要q只聚集在一起,就会q只一群打起来,当然都会打死. 假设一开始有1只,求a分钟后有多少只单细胞蚯蚓? 输入描述 Input Description 两个正整数A  Q 输出描述 Output Description

细胞分裂

[题目描述] Hanks博士手里现在有N种细胞,编号从1~N,一个第i种细胞经过1秒钟可以分裂为Si个同种细胞(Si为正整数).现在他需要选取某种细胞的一个放进培养皿,让其自由分裂,进行培养.一段时间以后,再把培养皿中的所有细胞平均分入M个试管,形成M份样本,用于实验.Hanks博士的试管数M很大,普通的计算机的基本数据类型无法存储这样大的M值,但M总可以表示为m1的m2次方,即M=m1^m2,其中m1.m2均为基本数据类型可以存储的正整数.注意,整个实验过程中不允许分割单个细胞,比如某个时刻若

cogs 466. [NOIP2009] 细胞分裂

466. [NOIP2009] 细胞分裂 ★★   输入文件:cell.in   输出文件:cell.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述]    Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家.现在,他正在为一个细胞实验做准备工作:培养细胞样本.    Hanks 博士手里现在有N 种细胞,编号从1~N,一个第i 种细胞经过1 秒钟可以分裂为Si 个同种细胞(Si 为正整数).现在他需要选取某种细胞的一个放进培养皿,让其自由分裂,

NOIP2009普及组细胞分裂(数论)——yhx

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