Nộp bài | Các bài nộp | Làm tốt nhất | Về danh sách bài |
P144PROH - ROUND 4H - Phép toán or |
Tí có một dãy n số nguyên không âm a_1, a_2, a_3,…, a_n.
Hàm f(l, r) (1 <= l <= r <= n, l, r là số nguyên) được Tí tính theo công thức như sau:
f (l, r) = a[l] | a[l+1] | … | a[r]. Ở đây | là phép toán “or” bit (phép toán hoặc).
Bây giờ, Tý lấy một tờ giấy ra viết tất cả các giá trị mà hàm f có thể nhận được khi thay các giá trị l, r thỏa mãn điều kiện trên.
Và Tí muốn biết có tất cả bao nhiêu giá trị khác nhau trong số các giá trị đó, các bạn giúp Tí nhé!
Input
Dòng đầu tiên là số phần tử của dãy số n (1 <= n <= 10^5).
Dòng thứ 2 gồm n số nguyên a_i, lần lượt là giá trị phần tử thứ i của dãy số (1 <= a_i <= 10^6).
Output
In ra một số nguyên duy nhất là số giá trị khác nhau mà Tí nhận được.
Example
Test 1:
Input:
3
1 2 0
Output:
4
Giải thích test 1: Tí sẽ viết tất cả 6 giá trị lên trên giấy, đó là f(1, 1) = 1, f(1, 2) = 3, f(1, 3) = 3,
f(2, 2) = 2, f(2, 3) = 2, f(3, 3) = 0. Như vậy, có tất cả 4 giá trị là 0, 1, 2, 3.
Test 2:
Input:
10
1 2 3 4 5 6 1 2 9 10
Output:
11
Được gửi lên bởi: | adm |
Ngày: | 2014-02-26 |
Thời gian chạy: | 1s |
Giới hạn mã nguồn: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Ngôn ngữ cho phép: | ASM32-GCC ASM32 MAWK BC C CSHARP C++ 4.3.2 CPP CPP14 COFFEE LISP sbcl DART FORTH GO JAVA JS-RHINO JS-MONKEY KTLN OCT PAS-GPC PAS-FPC PERL PERL6 PROLOG PYTHON PYTHON3 PY_NBC R RACKET SQLITE SWIFT UNLAMBDA |