trang chủ / đề bài / boxalice

Gửi hộp sô-cô-la cho Alice (bản dễ)

Đề bài

Mô tả

Bob chuẩn bị n hộp sô-cô-la được đánh số từ 1 đến n để tặng Alice. Ban đầu hộp thứ i chứa ai viên sô-cô-la, với ai∈{0,1}. Đảm bảo có ít nhất một hộp chứa sô-cô-la.

Alice không thích những tập hợp "nguyên tố cùng nhau", nên cô ấy chỉ vui khi tồn tại một số nguyên k>1 sao cho số viên sô-cô-la trong mọi hộp đều chia hết cho k (hộp rỗng, tức chứa 0 viên, vẫn được xem là chia hết cho k).

Để giúp Bob, Charlie sắp xếp lại các viên sô-cô-la. Trong một giây, Charlie có thể lấy một viên từ hộp i và bỏ sang hộp i−1 hoặc hộp i+1 (nếu hộp đó tồn tại). Hãy tính số giây ít nhất Charlie cần để làm Alice vui.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n: số lượng hộp.
  • Dòng thứ hai chứa n số nguyên a1,a2,…,an.

Dữ liệu ra

  • Nếu không có cách nào làm Alice vui, in ra −1.
  • Ngược lại, in ra một số nguyên: số giây ít nhất cần thiết.

Ràng buộc

  • 1≤n≤105
  • 0≤ai≤1
  • Có ít nhất một chỉ số i mà ai=1.

Ví dụ

Input Output Giải thích
3
1 0 1
2 Chuyển hai viên ở hộp 1 và hộp 3 vào hộp 2, mỗi lần mất 1 giây. Khi đó số viên là (0,2,0), tất cả chia hết cho k=2. Tổng cộng 2 giây.
1
1
-1 Chỉ có một hộp chứa đúng 1 viên và không thể chuyển đi đâu, nên không tồn tại k>1 chia hết cho 1.

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0