trang chủ / bài tập / almostap

Gần như cấp số cộng

Đề bài

Mô tả

Cho dãy số nguyên dương b1,b2,,bn. Bạn được phép thay đổi mỗi phần tử đúng một lần theo một trong ba lựa chọn:

  • Giữ nguyên,
  • Cộng thêm 1,
  • Trừ đi 1.

Sau khi thay đổi, kết quả là cấp số cộng nếu hiệu ai+1ai bằng nhau với mọi 1i<n. Dãy có một hoặc hai phần tử luôn là cấp số cộng.

Hãy xác định số phần tử ít nhất cần thay đổi (cộng hoặc trừ 1) để dãy trở thành cấp số cộng, hoặc thông báo 1 nếu không thể.

Sau khi thay đổi, các phần tử có thể bằng 0.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — số phần tử của dãy.
  • Dòng thứ hai chứa n số nguyên b1,b2,,bn.

Dữ liệu ra

In ra một số nguyên — số phần tử ít nhất cần thay đổi, hoặc 1 nếu không thể đưa dãy về cấp số cộng.

Ràng buộc

  • 1n100000
  • 1bi109

Ví dụ

Input Output Giải thích
4
24 21 14 10
3 Tăng b1 thêm 1, giảm b2 đi 1, tăng b3 thêm 1, giữ nguyên b4, được dãy [25,20,15,10] — cấp số cộng với công sai 5.
2
500 500
0 Dãy đã sẵn là cấp số cộng (công sai 0).
3
14 5 1
-1 Không có cách thay đổi ±1 nào biến [14,5,1] thành cấp số cộng.
5
1 3 6 9 12
1 Giảm b1 đi 1, được dãy [0,3,6,9,12] với công sai 3.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0