1. 程式人生 > >【題解】桐桐的深入研究

【題解】桐桐的深入研究

clas eve int for bsp 輸出 格式 ace event

題目描述

  兩個數的最大公約數與最小公倍數的問題解決了,桐桐又進行了進一步的研究。她發現求n個正整數的最大公約數和最小公倍數要復雜一些,你能幫助她解決這個問題嗎?

輸入輸出格式

輸入格式

  兩行,第一行為一個整數n(2≤n≤100),表示一共有n個正整數;第二行有n個正整數,相鄰的數用空格隔開,每個數不超過30000。

輸出格式

  兩行,第一行為一個數,表示n個正整數的最大公約數;第二行為一個數,表示n個正整數的最小公倍數。

  答案保證不超過長整型。

輸入輸出樣例

輸入樣例

3

3 4 5

輸出樣例

1

60

題解

  gcd與lcm的深入運用,主要是用當前的gcd求下一個gcd,用當前的lcm求下一個lcm。

技術分享圖片
#include<iostream>
#include<algorithm>

using namespace std;

int n,a[105],p=1,g;

int gcd(int a,int b)
{
    if(a%b) return gcd(b,a%b);
    else return b;
}

int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin
>>a[i]; } g=p=a[1]; for(int i=2;i<=n;i++) { g=gcd(max(g,a[i]),min(g,a[i])); } cout<<g<<endl; for(int i=2;i<=n;i++) { g=gcd(max(p,a[i]),min(p,a[i])); p*=a[i]; p/=g; } cout<<p;
return 0; }
參考程序

【題解】桐桐的深入研究