Đống kẹo chính phương
Nộp bài giải
Điểm:
5,00 (OI)
Giới hạn thời gian:
2.0s
Giới hạn bộ nhớ:
256M
Đầu vào:
stdin
Đầu ra:
stdout
Dạng bài
Ngôn ngữ cho phép
Ada, Algol, Assembly, Awk, C, C#, C++, D, Dart, Forth, Fortran, Go, Groovy, Java, Javascript, Kotlin, Lisp, Lua, Nim, ObjC, Pascal, Perl, PHP, Pike, Python, Racket, Ruby, Rust, Scheme, Scratch, Sed, TCL, Typescript, V, Zig
Cho đống kẹo (với chẵn). Đống thứ chứa 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 đống mà số kẹo trong đống là số chính phương, và đúng đống còn lại có số kẹo không phải số chính phương.
Lưu ý: Số là số chính phương (vì ).
Dữ liệu vào
- Dòng thứ nhất chứa số nguyên chẵn .
- Dòng thứ hai chứa số nguyên .
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 .
Ràng buộc
- và chẵn.
- .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 12 14 30 4 |
2 | Thêm viên vào đống thứ hai để . Khi đó các đống chính phương là đống và đống (cùng ), hai đống còn lại không phải chính phương. |
| 6 0 0 0 0 0 0 |
6 | Cả đống đều bằng — đều là số chính phương. Để có đống không phải chính phương, ta thêm viên vào ba đống bất kỳ (mỗi đống ), tổng bước. |
| 6 120 110 23 34 25 45 |
3 | là đống chính phương duy nhất. Đưa (mất ) và (mất ) cho ta thêm đống chính phương, tổng bước. |
| 10 121 56 78 81 45 100 1 0 54 78 |
0 | Đã có đống chính phương () và đống không phải chính phương. |
Bình luận