首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

HDU 1019 Least Common Multiple:求 n 個數的最小公倍數

     編輯:關於C++

題目簡介

給定 t 組測試資料,每組包含 n 個整數,求這 n 個數的最小公倍數 (LCM)。

解題思路

利用公式 lcm(a, b, c) = lcm(a, lcm(b, c)) 迭代計算。為了防止整數溢出,採用「先除後乘」技巧:lcm(a, b) = a / gcd(a, b) * b。

代碼實現

#include <iostream>
using namespace std;

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

int main() {
    int t, n, a;
    cin >> t;
    while (t--) {
        cin >> n;
        cin >> a;
        long long ans = a;
        for (int i = 1; i < n; i++) {
            cin >> a;
            ans = ans / gcd(ans, a) * a;
        }
        cout << ans << endl;
    }
    return 0;
}

複雜度分析

時間複雜度 O(n log max(a)),空間複雜度 O(1)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved