B3941 [GESP样题 五级] 小杨的锻炼

题目描述

小杨的班级里共有 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
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
	ll n, a, ans = 1;
	cin >> n;
	for(ll i = 1; i <= n; i++){
		cin >> a;
		ans *= a / __gcd(ans,a);	//除以最大公约数 
	}
	cout << ans;
	return 0;
}
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐