Bài 4: Chính phương (TS10 Nam Định 2025)

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: 1400 Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Một tập hợp \(A = \{a_1, a_2, \dots, a_k\}\) gồm \(k\) số tự nhiên khác nhau có tổng các phần tử là \(n\) được gọi là tập sinh chính phương nếu tổng của bất kỳ \(k-1\) phần tử trong \(A\) đều là số chính phương.

Ví dụ: Tập \(A = \{1, 22, 41, 58\}\) gồm \(k = 4\) phần tử có tổng các phần tử \(n = 122\) là một tập sinh chính phương vì tổng \(3\) số bất kì trong \(A\) đều là số chính phương:

  • \(1 + 22 + 41 = 64 = 8^2\)
  • \(1 + 22 + 58 = 81 = 9^2\)
  • \(1 + 41 + 58 = 100 = 10^2\)
  • \(22 + 41 + 58 = 121 = 11^2\)

Yêu cầu: Cho hai số nguyên \(n\)\(k\). Hãy đếm số tập hợp \(A\) gồm \(k\) phần tử có tổng các phần tử bằng \(n\) và tổng của \(k-1\) phần tử bất kì trong tập này đều là số chính phương.

Chú ý: Hai tập được coi là khác nhau nếu tồn tại một phần tử có trong tập này và không có trong tập kia.

Input

  • Gồm hai số nguyên \(n\)\(k\) (\(2 \le n \le 10^4, 2 \le k \le 10\)).

Output

  • Một số duy nhất là số tập \(A\) thỏa mãn yêu cầu đề bài.

Example

Test 1

Input
20 2
Output
1
Note

\(1\) tập tìm được là \(A = \{4, 16\}\).

  • Tổng \(2\) phần tử: \(4 + 16 = 20 = n\).
  • Tổng \(k-1=1\) phần tử bất kỳ: \(\{4\}\) là số chính phương (\(2^2\)), \(\{16\}\) là số chính phương (\(4^2\)).

Scoring

  • Subtask \(1\) (\(25\%\) số điểm): \(k = 2\).
  • Subtask \(2\) (\(50\%\) số điểm): \(k = 3\).
  • Subtask \(3\) (\(25\%\) số điểm): Không có ràng buộc gì thêm.

Bình luận (2)

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