Đống kẹo chính phương

Đề bài

Mô tả

Cho n đống kẹo (với n chẵn). Đống thứ i chứa ai viên kẹo.

Trong một bước, bạn được chọn một đống bất kỳ rồi thêm một viên kẹo mới vào đống đó, hoặc bớt đi một viên (chỉ khi đống đang có ít nhất một viên).

Hãy tìm số bước ít nhất để sau khi thực hiện, có đúng n/2 đống mà số kẹo trong đống là số chính phương, và đúng n/2 đống còn lại có số kẹo không phải số chính phương.

Lưu ý: Số 0 là số chính phương (vì 0=02).

Dữ liệu vào

  • Dòng thứ nhất chứa số nguyên chẵn n.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an.

Dữ liệu ra

In ra một số nguyên duy nhất — số bước ít nhất cần thực hiện. Nếu trạng thái ban đầu đã thỏa mãn yêu cầu, in ra 0.

Ràng buộc

  • 2n2·105n chẵn.
  • 0ai109.

Ví dụ

Input Output Giải thích
4
12 14 30 4
2 Thêm 2 viên vào đống thứ hai để 1416=42. Khi đó các đống chính phương là đống 2 và đống 4 (cùng =4), hai đống còn lại không phải chính phương.
6
0 0 0 0 0 0
6 Cả 6 đống đều bằng 0 — đều là số chính phương. Để có 3 đống không phải chính phương, ta thêm 2 viên vào ba đống bất kỳ (mỗi đống 02), tổng 6 bước.
6
120 110 23 34 25 45
3 25=52 là đống chính phương duy nhất. Đưa 120121=112 (mất 1) và 3436=62 (mất 2) cho ta thêm 2 đống chính phương, tổng 3 bước.
10
121 56 78 81 45 100 1 0 54 78
0 Đã có 5 đống chính phương (121,81,100,1,0) và 5 đống không phải chính phương.

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