Cài static IEnumerable MyTake(IEnumerable src, int k) — yield return tối đa k phần tử đầu từ src, dừng ngay sau khi đủ k (lazy). Cài static IEnumerable NoisySource() — yield return 1,2,3,... vô hạn, mỗi lần yield in 'p i' (i là số sắp yield) ra Console. Đọc k, gọi foreach over MyTake(NoisySource(), k) chỉ để cộng dồn vào sum, sau đó in 'sum S'. Output phải có k dòng 'p i' rồi 'sum S' — chứng minh source KHÔNG sinh phần tử thứ k+1. Nếu k=0 chỉ in 'sum 0'.
Dòng 1: k.
0 <= k <= 20
k dòng 'p 1'..'p k' rồi 'sum S' (S=k*(k+1)/2).
Ví dụ:
Đầu vào:
3
Đầu ra:
p 1
p 2
p 3
p 4
sum 6
Giải thích:
Đang tải editor...