Tăng giảm

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2200 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho một dãy \(a\) gồm \(n\) số nguyên dương. Số thứ \(i\) của dãy là \(a_i\). Mỗi thao tác ta có thể chọn một số của dãy \(a\) và cộng nó lên \(1\) hoặc trừ nó cho \(1\), sao cho các số của dãy vẫn nguyên dương. Một dãy được gọi là đẹp nếu ước chung lớn nhất của cả dãy khác \(1\).

Yêu cầu: Hãy tìm số thao tác ít nhất để làm cho dãy \(a\) đẹp.

Input

  • Dòng đầu tiên gồm một số nguyên dương \(n\) \((1 \leq n \leq 2 \times 10^5)\).
  • Dòng thứ hai gồm \(n\) số nguyên dương \(a_1, a_2, \ldots, a_n\) \((1 \leq a_i \leq 10^{12})\).

Output

  • Gồm một số nguyên duy nhất là số thao tác ít nhất để làm cho dãy \(a\) đẹp.

Example

Test 1

Input
3
6 7 6
Output
1
Note

Trừ \(a_2\) cho \(1\) thì ước chung nhỏ nhất của cả dãy bằng \(6\).

Test 2

Input
2
18 18
Output
0
Note

Dãy \(a\) ban đầu có ước chung nhỏ nhất của cả dãy bằng \(18\).

Scoring

  • Subtask 1 (\(18\%\) số điểm): \(a_i \leq 20\), \(\forall 1 \leq i \leq n\).
  • Subtask 2 (\(23\%\) số điểm): \(a_i \leq 10^6\).
  • Subtask 3 (\(59\%\) số điểm): Không có ràng buộc gì thêm.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: