Ở một lớp học có học sinh. Mỗi bạn đều phải trực nhật và cứ sau một số ngày nhất định bạn đó mới phải trực nhật lại. Biết rằng xuất phát điểm ban đầu tất cả sẽ đều trực nhật vào ngày đầu tiên. Bạn hãy giúp lớp trưởng tính xem sau bao nhiêu ngày thì tất cả các bạn mới lại cùng nhau trực nhật và khi đó mỗi bạn đã trực nhật bao nhiêu lần. Dữ liệu vào:  Dòng đầu chứa số nguyên n  Dòng thứ hai chứa n số nguyên . Dữ liệu ra:  Dòng đâu tiên ghi ra số ngày mà tất cả cùng nhau trực nhật lại.  Dòng thứ hai chứa n số là số lần một bạn đã trực nhật cho tới lúc tất cả cùng trực nhật

2 câu trả lời

uses crt;
var a:array[0..1000000] of longint;
    res:qword;
    i, n:longint;
function lcm(a:qword; b:longint):qword;
var tmp, t:qword;
begin
    t:=a * b;
    if t = 0 then exit(a + b);
    while b <> 0 do
        begin
            tmp:=a mod b;
            a:=b;
            b:=tmp;
        end;
    exit(t div a);
end;
begin
    clrscr;
    readln(n);
    res:=0;
    for i:=1 to n do
        begin
            read(a[i]);
            res:=lcm(res, a[i]);
        end;
    writeln(res);
    for i:=1 to n do writeln(res div a[i]);
readln
end.

#include <bits/stdc++.h>
#define ll long long
#define faster ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
ll n, a[1005], res = 1;
ll bcln(ll a, ll b)
{
    return a * b / __gcd(a, b);
}
int main()
{
    cin >> n;
    for( ll i = 1; i <= n; i++)
    {
        cin >> a[i];
        res = bcln(res, a[i]);
    }
    cout << res << '\n';
    for ( ll i = 2; i <= n; i++)
        cout << res/a[i] << " ";
}

Câu hỏi trong lớp Xem thêm