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. Linux环境实现python远程可视编程

    1. Linux环境 已经安装spyder模块 spyder模块是anaconda自动安装.anaconda安装步骤转:centos7安装Anaconda3 已安装X服务 2. 客户端环境 安装Mob ...

  2. HTML5页面介绍

    1.<!DOCTYPE html>     文档声明:用于告诉浏览器使用html哪个版本的标准解析页面,此写法代表使用html5的标准去解析 2.<html>     根标签, ...

  3. 快速提交一个项目到github或gitee上

    以下步骤假设你已经安装好git 一.Git 全局设置: git config --global user.name "用户名" git config --global user.e ...

  4. phpcms企业站的一些知识

    头header.html 尾footer.html 主页用index.html 列表页用list.html 单网页用page.html 内容页用show.html {template "co ...

  5. Fortify漏洞之Open Redirect(开放式重定向)

    继续对Fortify的漏洞进行总结,本篇主要针对  Open Redirect(开放式重定向)  的漏洞进行总结,如下: 1.1.产生原因: 通过重定向,Web 应用程序能够引导用户访问同一应用程序内 ...

  6. 爬虫请求库 requests

    requests模块   阅读目录 一 介绍 二 基于GET请求 三 基于POST请求 四 响应Response 五 高级用法 一 介绍 #介绍:使用requests可以模拟浏览器的请求,比起之前用到 ...

  7. python之random、time与sys模块

     一.random模块 import random # float型 print(random.random()) #取0-1之间的随机小数 print(random.uniform(n,m)) #取 ...

  8. 关于Django auth注册登录模块的具体使用

    from django.urls import path from . import views urlpatterns = [ #主页,用来显示类别等其他数据 path('',views.index ...

  9. Python_算术运算符

    1.算术运算符 示例: >>> num1=7 >>> num2=3 >>> num1+num2 #+ 10 >>> num1-n ...

  10. DataTable通过Select进行过滤

    DataTable方法测试 //测试DataTable的select DataTable dt = new DataTable(); //a.OrderType, //a.[Status] dt.Co ...