题目描述

小杨的班级里共有 nnn 名同学,每位同学都有各自的锻炼习惯。具体来说,第 iii 位同学每隔 aia_iai 天就会进行一次锻炼(也就是说,每次锻炼会在上一次锻炼的 aia_iai 天后进行)。某一天,班上的 nnn 名同学恰好都来进行了锻炼。他们对此兴奋不已,想要计算出下一次所有同学都来锻炼,至少要过多少天。但他们不会计算,你能帮帮他们吗?

输入格式

第一行一个整数 nnn,表示同学的数量。
第二行 nnn 个用空格隔开的正整数,依次为 a0,a1,…,an−1a_0, a_1, …, a_{n-1}a0,a1,,an1

输出格式

输出一个整数,表示下一次所有同学都来锻炼,至少要过多少天。

输入输出样例 #1

输入 #1

3
1 2 3

输出 #1

6

输入输出样例 #2

输入 #2

4
2 4 8 16

输出 #2

16

输入输出样例 #3

输入 #3

4
2 4 6 8

输出 #3

24

说明/提示

样例 1 解释

第一位同学每天都锻炼;第二位同学每 222 天锻炼一次;第三位同学每 333 天锻炼一次。因此,666 天之后,三位同学都会进行锻炼。在此之前,第二位同学只会在第 2,42, 42,4 天进行锻炼,第三位同学只会在第 333 天进行锻炼,他们都无法相遇。

样例 2 解释

第四位同学每 161616 天锻炼一次,而 161616 天后也恰好是前三位同学锻炼的日子。

数据规模与约定

  • 20%20\%20% 的数据,n=2n = 2n=2
  • 50%50\%50% 的数据,n=4n = 4n=4
  • 100%100\%100% 的数据,2≤n≤102 \leq n \leq 102n101≤ai≤501 \leq a_i \leq 501ai50

solution

求最小公倍数就可以了

代码

#include "iostream"
#include "cstddef"
#include "vector"
#include "unordered_map"
#include "unordered_set"
#include "queue"
#include "stack"
#include "algorithm"
#include "sstream"
#include "format"
#include "cstdio"
#include "cstring"
#include "random"
#include "ctime"
#include "cstdlib"
#include "algorithm"

using namespace std;


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

int lcm(int a, int b){
    return a / gcd(a, b) * b;
}

int main() {
    int n, x, y;
    cin >> n;
    cin >> x;
    while (--n){
        cin >> y;
        x = lcm(x, y);
    }
    cout << x;
}



结果

在这里插入图片描述

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐