Problem

链接:https://ac.nowcoder.com/acm/problem/21674
来源:牛客网

牛牛最近在学习初等数论,他的数学老师给他出了一道题,他觉得太简单了, 懒得做,于是交给了你,

题目是这样的:

有一堆数,问你能否从中选出若干个数使得这些数的最小公倍数为x

输入描述:

第一行输入一个整数n (1 ≤ n ≤ 50)
第二行输入n个整数ai (1 ≤ ai ≤ 109)
第三行输入一个整数x (2 ≤ x ≤ 109)

输出描述:

如果可以,输出"Possible"
否则输出"Impossible"

输入1

4
2 3 4 5
20

输出1

Possible

输入2

3
2 3 4
611

输出2

Impossible

输入3

3
2 3 4
12

输出3

Possible

输入4

10
1 2 3 4 5 6 7 8 9 10
24

输出4

Possible

备注:

子任务1:x <= 1000
子任务2:x <= 1000000
子任务3:无限制

Solve

既然要找最小公倍数x,那么a[i]必须是x的因子。

这些x的因子a[i]的最小公倍数lcm如果能够被x整除,那么这个x就一定能被取到。

为什么呢?

比如\(x=p_1^{\alpha_1}p_2^{\alpha_2}\cdots p_s^{\alpha_s}\)

那么\(a[i]=p_1^{\beta_1}p_2^{\beta_2}\cdots p_s^{\beta_s},\,\,\beta_i<\alpha_i\)

如果lcm正好是x的倍数,那么一定可以对于每一个素数,lcm的指数一定不小于x的指数,而每一个a[i]的指数都小于x的指数。

公倍数是所有指标里面取最大值,因此这个lcm最大就是x!

因此lcm==x就有解!

Code

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

int gcd(int a,int b){
    return b?gcd(b,a%b):a;
}

int a[100];

int main()
{
    int n,x;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    scanf("%d",&x);
    ll lcm=1;
    for(int i=0;i<n;i++){
        if(x%a[i]==0){
            lcm=(ll)a[i]*lcm/gcd(a[i],lcm);
        }
    }
    if(lcm==x){
        cout<<"Possible"<<endl;
    }else{
        cout<<"Impossible"<<endl;
    }
    return 0;
}

牛客训练21674——牛牛与LCM的更多相关文章

  1. 牛客挑战赛 39 牛牛与序列 隔板法 容斥 dp

    LINK:牛牛与序列 (牛客div1的E题怎么这么水... 还没D难. 定义一个序列合法 当且仅当存在一个位置i满足 $a_i>a_,a_j<a_$且对于所有的位置i,$1 \leq a_ ...

  2. 牛客练习赛63 牛牛的树行棋 差分 树上博弈 sg函数

    LINK:牛牛的树行棋 本来是不打算写题解的. 不过具体思考 还是有一段时间的. 看完题 一直想转换到阶梯NIM的模型上 转换失败. 考虑SG函数. 容易发现 SG函数\(sg_x=max{sg_{t ...

  3. 牛客练习赛63 牛牛的斐波那契字符串 矩阵乘法 KMP

    LINK:牛牛的斐波那契字符串 虽然sb的事实没有改变 但是 也不会改变. 赛时 看了E和F题 都不咋会写 所以弃疗了. 中午又看了一遍F 发现很水 差分了一下就过了. 这是下午和古队长讨论+看题解的 ...

  4. 牛客训练赛25-A-最长区间

    https://www.nowcoder.com/acm/contest/158#question 这题问最长的严格连续递增序列的最长长度是多少? 最开始感觉这道题不可做,因为有1e5个点,还有1e5 ...

  5. 牛客训练赛25-A-因数个数

    题目链接https://www.nowcoder.com/acm/contest/158/A 无语...这题很迷啊,原谅我的菜,刚开始想用预处理欧拉筛和前缀和,可是这题太血崩了,这样一样要遍历,1-e ...

  6. 这是一个数学题牛客训练赛E

    题目描述   https://www.nowcoder.net/acm/contest/78/E 已知有一个n+1个数的数列,对于给定的A0和An ,当i满足当1<=i<=n-1时有    ...

  7. 牛客训练五:炫酷路途(c++与dp)

    题目链接:传送门 思路:每隔2^i(0<=i<=INF)就有一条路径,所以可以将从头到尾的路线视为一个有向图, 将ai,bi以此输入,然后将路径从小到大排序,不断更新路径. __built ...

  8. 牛客训练六:海啸(二维树状数组+vector函数的使用)

    题目链接:传送门 思路: 二维树状数组, vector(first,last)函数中assign函数相当于将first中的函数清空,然后将last中的值赋值给first. 参考文章:传送门 #incl ...

  9. 牛客训练四:Applese 的回文串(思维)

    题目链接:传送门 思路:插入不同的字符与删除不同的字符相同,所以每次判断到不同位置时将这个字符删除然后判断是否为回文串即可, 如果一开始就是回文串,那么答案也是yes. #include<ios ...

随机推荐

  1. "多层感知器"--MLP神经网络算法

    提到人工智能(Artificial Intelligence,AI),大家都不会陌生,在现今行业领起风潮,各行各业无不趋之若鹜,作为技术使用者,到底什么是AI,我们要有自己的理解. 目前,在人工智能中 ...

  2. mac os安装mtr

    MTR是Linux平台上一款非常好用的网络诊断工具,集成了traceroute.ping.nslookup的功能,用于诊断网络状态非常有用 现使用的方法是下载pkg包手动安装 mtr的pkg下载地址 ...

  3. 【转载】C#中使用OrderBy和ThenBy等方法对List集合进行排序

    在C#的List操作中,针对List对象集合的排序我们可以使用OrderBy.OrderByDescending.ThenBy.ThenByDescending等方法按照特定的对象属性进行排序,其中O ...

  4. soapUI与post测试soap webservice接口

    之前装了SoapUI,最近装了Postman,分别用它们测试了WebService,下面为用法. 测试的在线WebService(数据来源于中国气象局)Endpoint: http://www.web ...

  5. 【SpringMVC】Validation校验

    一.概述 二.步骤 2.1 引入 Hibernate Validator 2.2 配置 2.3 创建CustomValidationMessages 2.4 校验规则 2.5 捕获错误 2.6 在页面 ...

  6. AD19新功能之跟随走线

    跟随走线 AD19新增跟随走线,比如需要按照特定的轨迹进行走线,比如要绕着一个圆进行走线,或者靠着边框走线,普通模式下的效果如下图所示,线会跟着指针跑: 在走线模式下,按住 shift + f ,然后 ...

  7. SpringBoot Kafka 整合集成 示例教程

    1.使用IDEA新建工程,创建工程 springboot-kafka-producer 工程pom.xml文件添加如下依赖: <!-- 添加 kafka 依赖 --> <depend ...

  8. linux fstab下挂载错误导致cannot open access to console, the root account is locked的问题

    用 deepin 安装 u 盘启动,出现选择安装语言的界面时,按 ctrl+alt+T,进入 tty,然后输入 startx,进入 live cd 模式,挂载硬盘的根分区,然后修改 /etc/fsta ...

  9. python装饰器,迭代器,生成器,协程

    python装饰器[1] 首先先明白以下两点 #嵌套函数 def out1(): def inner1(): print(1234) inner1()#当没有加入inner时out()不会打印输出12 ...

  10. php守护进程创建和简要分析

    守护进程可 由系统启动脚本 /etc/rc.local crontab任务, 用户shell 方式运行 具体概念可参考c的 进程守护化基本步骤 1.创建子进程,终止父进程 (pcntl_fork,ex ...