Điểm:
1100 (p)
Thời gian:
1.0s
Bộ nhớ:
256M
Input:
bàn phím
Output:
màn hình
Nhân thích học toán. Đương nhiên là Nhân cũng thích nhân. Đối với Nhân, mọi thứ đều có thể biểu diễn được dưới dạng những con số. Hôm nay, Nhân đã gặp phải \(n\) sự vật sự việc khác nhau và cậu đã ghi vào nhật kí của mình một dãy \(a\) gồm \(n\) số tượng trưng cho những thứ ấy.
Để đánh giá mỗi ngày trôi qua tốt hay xấu, Nhân sẽ dựa vào một con số. Số này được tính bằng: Nhân sẽ nhân toàn bộ \(n\) số của ngày hôm đó lại. Nếu tích này vượt quá \(10^{18}\), Nhân sẽ coi như con số đó là \(-1\).
Tuy nhiên khá xui là Nhân đã bỏ quên máy tính ở trường nên không thể nhân được! Bạn hãy nhân giúp Nhân số trên (cho ngày hôm nay) nhé.
Input
- Dòng đầu tiên chứa \(n\) \((2 \le n \le 10^5)\): độ dài dãy
- Dòng tiếp theo chứa \(n\) số nguyên không âm \(a_1, a_2, a_3, \dots, a_n (0 \le a_i \le 10^{18})\)
Output
- Dòng duy nhất chứa tích theo mô tả của đề bài
Test 1
Input
2
1000000000 1000000000
Output
1000000000000000000
Note
Tích bằng đúng \(10^{18}\)
Test 2
Input
3
999999000001 9901 101
Output
-1
Note
Tích tạo được là \(10^{18} + 1 > 10^{18}\) nên đáp án là \(-1\)
Bình luận
solution
s khởi tạo bằng 1
chạy từ a[0] đến a[n-1]
nếu kích thước của s cộng cho kích thước của a[i] đang xét trừ đi 2 mà lớn hơn 18 hoặc s nhân với a[i] lớn hơn 10^18 thì cout<<-1 và return 0;
nếu không thì nhân s với a[i]
xong xuất s là dc
do 6 test cuối có số 0 ở cuối nên phải sort tăng dần trước khi test để tránh ra kết quả -1
code C++
ko có code đâu
[comment deleted]
Hint
6 test cuối số 0 nằm ở cuối dãy, nên khi kết quả > 10^18 chương trình sai sẽ dừng lại mà không xét hết đầu vào.
6 text cuối phải là -1 chứ sao lại là 0
mấy test cuối sai rồi
phải là -1 chứ sao lại là 0