Trong thời đại dữ liệu lớn, khả năng xử lý nhanh và chính xác khối lượng thông tin khổng lồ là một yêu cầu thiết yếu. Với công cụ là lập trình và thuật toán, Tin học cho phép chúng ta tiếp cận và giải quyết những bài toán tưởng chừng đơn giản nhưng trở nên đầy thử thách khi dữ liệu tăng đột biến.
Trong một kỳ thi tuyển sinh nhằm đánh giá khả năng lập trình của thí sinh, mỗi thí sinh được cung cấp một dãy số gồm ~n~ số nguyên. Nhiệm vụ của thí sinh là viết một chương trình để tìm ước chung lớn nhất (UCLN) của toàn bộ dãy số này. Dãy có thể chứa các số nguyên âm và có kích thước rất lớn, vì vậy thuật toán cần được tối ưu để xử lý hiệu quả với dữ liệu lớn.
Yêu cầu
Tìm UCLN của tất cả các phần tử trong dãy.
Dữ liệu đầu vào
Gồm hai dòng:
- Dòng đầu tiên nhập vào số nguyên ~n~ ~(1 \le n \le 10^5)~ là số phần tử trong dãy.
- Dòng thứ hai nhập vào ~n~ số nguyên ~a_1, a_2, \ldots, a_n~ ~(-10^6 \le a_i \le 10^6)~, cách nhau bởi ít nhất một dấu cách.
Dữ liệu đảm bảo trong mảng ~a~ luôn có ít nhất một số nguyên khác ~0~.
Dữ liệu đầu ra
Gồm một số nguyên duy nhất là UCLN của tất cả các phần tử trong dãy.
Ví dụ
Ví dụ 1
INPUT
5
12 -24 36 -60 48
OUTPUT
12
Bình luận