zoukankan      html  css  js  c++  java
  • 寻找 n 个数中 k 个数的最小公倍数 x LCMSetEasy

    题目来源: http://acm.nyist.net/JudgeOnline/problem.php?pid=976

    LCMSetEasy

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:2
     
    描述

    For any non-empty sequence of positive integers s1, s2, ..., sK their least common multiple is the smallest positive integer that is divisible by each of the given numbers. We will use "lcm" to denote the least common multiple. For example, lcm(3) = 3, lcm(4,6) = 12, and lcm(2,5,7) = 70.

    You are given an array S and an integer x. Find out whether we can select some elements from S in such a way that their least common multiple will be precisely x. Formally, we are looking for some s1, s2, ..., sK, K >= 1, such that each si belongs to S, and x=lcm(s1, s2, ..., sK). Return "Possible" if such elements of S exist, and "Impossible" if they don't.

     
    输入
    There are multiple test cases.
    Each test case contains two lines.The first line is two integer N(1≤N≤100,represents the array contains N integers) and x(1≤x≤10^9). The second line contains N integers,the ith integer represents si(1≤si≤10^9).
    输出
    Printf "Possible" if such elements of S exist, and "Impossible" if they don't.
    样例输入
    4 20
    2 3 4 5
    3 60
    2 3 4
    样例输出
    Possible
    Impossible


    分析:
    在给定的n 个数中, 先去掉 不能整数 x 的数, 剩下的数 的最小公倍数 恰好 == x, 表示有解。
    代码如下:
    #include<iostream>
    #include<stdlib.h>
    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    #include<string>
    #include<queue>
    #include<algorithm>
    #include<map>
    using namespace std;
    vector<int> vk;
    int gcd(int a, int b){
        return b==0?a : gcd(b, a%b);
    }
    int lcm(int a, int b){
        return b/gcd(a,b) * a;
    }
    int main(){
        int n , x,temp;
        while(cin>>n>>x){
            vk.clear();
            for(int i=0 ;i<n ;i++){
                cin>>temp;
                if(x%temp == 0)
                    vk.push_back(temp);
            }
            int lc=1;
            for(int i=0; i<vk.size(); i++){
                lc=lcm(lc, vk[i]);
            }
            if(lc == x) printf("Possible
    ");
            else printf("Impossible
    ");
        }
        return 0;
    }
  • 相关阅读:
    mysql 8 查询报错(sql_mode=only_full_group_by)
    docker安装mysql8版本后 客户端连接出现client does not support authentication...
    docker常用命令
    查看tomcat日志相关Linux命令
    java项目部署到linux服务器涉及的命令
    ehcache与redis对比
    JS中调用BigDecimal处理金额
    thymeleaf模板 th:href 踩坑
    汇总一些绝对有价值的解决方案,边学习边收集
    spring注解总结,spring注解大全
  • 原文地址:https://www.cnblogs.com/zn505119020/p/3606229.html
Copyright © 2011-2022 走看看