ta có
- 9 = (1+2+3+…+9) - (1+2+3+…+8) = 9(9+1)/2 - 8(8+1)/2
- 4+5 = (1+2+3+4+5) - (1+2+3) = 5(5+1)/2 - 3(3+1)/2
- 2+3+4 = (1+2+3+4) - (1) = 4(4+1)/2 - 1(1+1)/2
vậy số n có thể phân tích thành n = a(a+1)/2 - b(b+1)/2
hay 2n = a^2 + a - b^2 - b = a^2 - b^2 + (a - b) = (a - b)(a + b + 1)
vậy chỉ cần đếm số cách phân tích 2n thành tích 2 số x y là ra có bao nhiêu cách phân tích n thành tổng các số tự nhiên liên tiếp :V
vd ở trên:
- với 9: a = 9, b = 8, a-b = 1, a+b+1 = 18, 1*18 = 2*9 = 2n
- với 4+5: a = 5, b = 3, a-b = 2, a+b+1 = 9, 2*9 = 2*9 = 2n
- với 2+3+4: a = 4, b = 1, a-b = 3, a+b+1 = 6, 3*6 = 2*9 = 2n
có thể còn có corner case là pt
a - b = x
a + b + 1 = y
có thể vô nghiệm hoặc ko có nghiệm a, b nguyên với cặp x y nào đó? Phân tích được 2n thành x*y rồi thì có thể phải giải pt 2 ẩn này nữa, mà giải cũng dễ thôi :V
2a + 1 = x + y
b = a - x
a = (x + y - 1) / 2
b = (-x + y - 1) / 2
kiểm tra a, b là nghiệm nguyên a > 0, b >= 0 nữa là xong :V
nhìn qua thì thấy cần x+y là số lẻ để có nghiệm nguyên, cần y > x để b >= 0, vậy chỉ cần chạy x từ 1 tới căn(2n) để xét 2n có chia hết cho x ko, nếu chia hết thì kiểm tiếp x+y = x + 2n/x phải là số lẻ nữa là xong.
chạy thử số nhỏ ra được dãy 1 2 1 2 2 2 1 3 2 2 2 2 2 4
, tìm trên oeis ra https://oeis.org/search?q=1+1+2+1+2+2+2+1+3+2+2+2+2+2+4+1+2&sort=&language=english&go=Search A001227 Number of odd divisors of n. Cũng có lý. 2n là số chẵn nên 2n = xy thì 1 trong 2 hoặc cả x và y là số chẵn. Mà ở đây ta muốn x+y lẻ nên x hoặc y phải là số lẻ, vậy bài toán quy về đếm số ước lẻ của 2n :V
phân tích 2n thành thừa số nguyên tố 2n = 2^{e_0} * p_1^{e_1} * p_2^{e_2} * p_3^{e_3} * ... * p_w^{e_w} với p_i là số nguyên tố khác 2. Đáp án là tích (e_1 + 1)(e_2 + 1)(e_3 + 1)...(e_w + 1)
vậy trường hợp tệ nhất của bài toán giống như kiểm tra 1 số 18 chữ số có phải là số nguyên tố hay ko
tìm m sao cho n = 2^{e'_0} * m. Với m cỡ 1e18:
- dùng Miller-Rabin để ktra m là số ng tố hay ko, nếu ng tố thì đáp án là 2
- tạo sàng tới 1e6 và chia m cho các số ng tố trong sàng này
- nếu m ko chia hết cho số nt tố nào trong sàng thì bảo đảm m chỉ có tối đa 2 thừa số nguyên tố hay m = pq. Vậy đáp án là 4 nếu p khác q, hoặc 3 nếu p = q hay m là số chính phương.