
arrayProperty
Mark vừa mới được học về tính biến thiên của các dãy số nguyên, nhưng cậu mới chỉ thành thạo 2 tính chất, đó là tuyến tính (linear) (tức là ak + 1 = ak + const
với cặp số bất kì thuộc dãy) và tính lũy thừa (exponential) (tức là ak + 1 = ak * const
với cặp số bất kì thuộc dãy). Mark muốn luyện tập xác định tính biến thiên của một dãy số bất kì. Hãy giúp cậu ấy.
Cho dãy số nguyên a1, a2, … Hãy giúp Mark xác định dãy số đã cho là tuyến tính, hay có tính lũy thừa, hay không thể xác định được. Nếu tính biến thiên của dãy là xác định được, hãy tính giúp Mark công sai (arithmetic difference) của dãy số (nếu nó tuyến tính) hay công bội (geometric difference) của dãy (nếu nó có tính lũy thừa).
Lưu ý:
- Nếu dãy lũy thừa có công bội không phải là số nguyên, trả về dạng phân số (ví dụ: 1/2)
- Một dãy số chỉ có thể có một tính chất
Ví dụ:
- Với
a = [1, 3, 5, 7, 9, 11]
thìarray_property(a) = "Linear - Arithmetic Difference = 2"
- Với
a = [2, 4, 8, 16, 32]
thìarray_property(a) = "Exponential - Geometric Difference = 2"
Với
a = [5, -6, 3, -8]
thìarray_property(a) = "Undetermined"
Giải thích:
- Test case 1: Dãy số là tuyến tính, có công sai là 2
- Test case 2: Dãy số có tính lũy thừa, có công bội là 2
- Test case 3: Dãy số không tuyến tính, cũng không có tính lũy thừa
Đầu vào/ Đầu ra:
- [Thời gian chạy] 0.5s với C++, 1s với Java và C#, 3s với Python, Go và JavaScript.
- [Đầu vào] Array of integers: a
1 ≤ a.length ≤ 106
-109 ≤ a[i] ≤ 109
- [Đầu ra]: string
"Linear - Arithmetic Difference = ..."
nếu dãy tuyến tính"Exponential - Geometric Difference = ..."
nếu dãy có tính lũy thừa"Undetermined"
nếu tính biến thiên của dãy không thể xác định được
Post Comment