Viết hai decorator: memoize (dùng dict cache theo args), count_calls (gắn .calls đếm số lần wrapper được gọi). Chain: @count_calls (ngoài cùng) trên @memoize trên hàm đệ quy C(n,k) (C(n,0)=C(n,n)=1, C(n,k)=C(n-1,k-1)+C(n-1,k)). Đọc Q truy vấn n k; với mỗi truy vấn in C(n,k) mod (10^9+7). Cuối cùng in C.calls.
Dòng đầu Q. Q dòng sau n k.
1 <= Q <= 50, 0 <= k <= n <= 30. Lưu ý: count_calls phải nằm NGOÀI memoize, nên mỗi cuộc gọi (kể cả cache hit) đều +1.
Q dòng kết quả, sau đó một dòng số lần wrapper ngoài cùng được gọi (chính là tổng số lệnh gọi C nhìn từ bên ngoài, bao gồm cả đệ quy).
Ví dụ:
Đầu vào:
3
5 2
10 5
6 3
Đầu ra:
10
252
20
53
Giải thích:
Đang tải editor...