Problem Description

求n个数的最小公倍数。

Input

输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。

Output

为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。

Sample Input

2 4 6
3 2 5 7

Sample Output

12
70

题目分析

求解n个数的最小公倍数一般有两种做法:

  1. 分解质因数:比较繁琐这里不作解释

  2. 公式法两两运用:

    假设现在要求最小公倍数的两个数为x,y,他们的最大公约数为p,最小公倍数为q。则xy=pq,也就是说只要求得两个数的最大公约数就可求得这两个数的最小公倍数。

    但是题目中要求的是n个数的 最小公倍数,这里只需要用最小公倍数代替原来的两个数即可。

    例如:12 15 8 9

    第一步:求得12和15的最小公倍数为60

    第二部:求得60和8的最小公倍数为120

    第三步:求得120和9的最小公倍数为360

    所以,原问题转换为求两个数的最大公约数。

辗转相除法求最小公约数

时间复杂度:\(O(lgN)\)

int gcd(int a, int c)
{
/*if (c == 0)
return a;
else
return gcd(c, a%c);*/ return c == 0 ? a :gcd(c, (a%c));
}
#include<iostream>
using namespace std;
int gcd(int a, int c) {
return c == 0 ? a : gcd(c, (a%c));
}
int main() {
int n;
int arr[105];//存储数据
//考虑到溢出的情况,可以使用long long型
while (cin >> n) {
for (int i = 1; i <= n; i++) {
cin >> arr[i];
if (i != 1) {
arr[i] = arr[i - 1] / gcd(arr[i - 1], arr[i])*arr[i];
}
}
cout << arr[n] << endl;
}
return 0;
}

#2028:Lowest Common Multiple Plus(n个数的最小公倍数)的更多相关文章

  1. hdu 2028 Lowest Common Multiple Plus(最小公倍数)

    Lowest Common Multiple Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...

  2. HDU 2028 Lowest Common Multiple Plus

    http://acm.hdu.edu.cn/showproblem.php?pid=2028 Problem Description 求n个数的最小公倍数.   Input 输入包含多个测试实例,每个 ...

  3. 杭电 2028 ( Lowest Common Multiple Plus )

    链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2028 题目要求:就是求最大公倍数,我百度了一下,最好实现的算法就是:       公式法 由于 ...

  4. HDU——1019Least Common Multiple(多个数的最小公倍数)

    Least Common Multiple Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Ot ...

  5. #2028 Lowest Common Multiple Plus

    http://acm.hdu.edu.cn/showproblem.php?pid=2028 应该是比较简单的一道题啊...求输入的数的最小公倍数. 先用百度来的(老师教的已经不知道跑哪去了)辗转相除 ...

  6. 最大公约数最小公倍数 (例:HDU2028 Lowest Common Multiple Plus)

    也称欧几里得算法 原理: gcd(a,b)=gcd(b,a mod b) 边界条件为 gcd(a,0)=a; 其中mod 为求余 故辗转相除法可简单的表示为: int gcd(int a, int b ...

  7. Lowest Common Multiple Plus

    Lowest Common Multiple Plus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...

  8. 【HDU 2028】Lowest Common Multiple Plus

    Problem Description 求n个数的最小公倍数. Input 输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数. Output 为每组测试数据输出它们的最小公倍数 ...

  9. HDU2028:Lowest Common Multiple Plus

    Problem Description 求n个数的最小公倍数. Input 输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数. Output 为每组测试数据输出它们的最小公倍数 ...

  10. 3F - Lowest Common Multiple Plus

    求n个数的最小公倍数. Input 输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数. Output 为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行.你可以假设最 ...

随机推荐

  1. 【ASP.NET Core】MVC过滤器:运行流程

    MVC 的过滤器(Filters)也翻译为"筛选器".但是老周更喜欢翻译为"过滤器",意思上更好理解. 既然都叫过滤器了,就是在MVC的操作方法调用前后进行特殊 ...

  2. Modbus转Profinet--TS-180 网关连接西门子 PLC 和工业称重仪表

    项目 随着科技的高速发展,工业自动化行业对日益多样的称重需求越来越高,上海某公司在国内的一个 工业自动化项目中,监控中心系统需要远程实时采集工业称重仪表测量的各种称重参数.该系统使用的是 西门子 S7 ...

  3. C#使用SqlSugar操作MySQL数据库实现简单的增删改查

    公众号「DotNet学习交流」,分享学习DotNet的点滴. SqlSugar简介 SqlSugar 是一款 老牌 .NET 开源多库架构ORM框架(EF Core单库架构),由果糖大数据科技团队 维 ...

  4. keil 4 安装教程

    一.下载 keil 官网 二.安装教程 1.开始安装 双击安装包,开始安装,直接下一步. 2.勾选同意,下一步 3.选择软件安装路径,下一步 4.填写信息 可以随意填写,下一步. 5.等待安装 6.安 ...

  5. Django学习(二) 之 模板的使用

    写在前面 昨晚应该是睡的最好一天吧,最近一个月睡眠好差,睡不着不说,而且半夜总醒,搞的第二天就会超没精神. 昨天下午去姐姐家,小外甥直接进屋就问我说: 老舅,你都很长时间没来啦,**(前女友)怎么哪去 ...

  6. springboot整合kafka,收不到消息,日志输出dead for group解决方法

    项目启动以后收不到Kafka发出的消息,日志输出类似: INFO [org.springframework.kafka.KafkaListenerEndpointContainer#1-7-C-1] ...

  7. lua完整学习笔记

    lua注释 -- 单行注释 --[[ 多行注释 ]]-- lua数据结构 nil          无效值与Java的Null类似,但是在条件表示中是false boolean      布尔值,tu ...

  8. Winform 控件库 MaterialSkin.2 使用教程(鸿蒙字体版)

    ️MaterialSkin.2 控件库在之前的文章中已经介绍过了,就不啰嗦了 - > Winform 好看控件库推荐:MaterialSkin.2 ️官方库里使用的是 Google 的 Robo ...

  9. Redis 学习笔记2:持久化

    目录 1 什么是持久化 1.1 aof 1.2 rdb 2 RDB持久化 2.1 RDB 是什么 2.2 手动触发 3 AOF持久化 3.1 aof 是什么 3.2 appendfile 文件说明: ...

  10. Mongodb安装篇+可视化工具篇

    下载MongoDB 官网下载地址:Download MongoDB Community Server | MongoDB   Version 选择:稳定版4.4.2 Mongo的版本分为稳定版和开发版 ...