Python cho người Việt

Python cho người Việt

Phát động cuộc thi Giải Toán Bằng Python

written by Phan Đắc Anh Huy, on May 24, 2010 2:32:00 PM.

Sau thành công của 2 lần thi trước, nhóm PCNV tiếp tục phát động cuộc thi Giải Toán Bằng Python để chào mừng ngày quốc tề thiếu nhi đang đến rất gần. Đề thi rất đơn giản:

Hãy dùng ngôn ngữ lập trình Python để tính toán và xuất ra các cặp số n và k thỏa mãn:

1 + 2 + ... + n = n + 1 + n + 2 + ... + n + k
Input:

Không có.

Output:

Standard Output.

Output Format:

In trên nhiều dòng, mỗi dòng là một cặp số n, k cách nhau bằng một hoặc nhiều khoảng trắng.

Yêu cầu:
  • Chỉ được dùng các module built-in.

  • Không được in ra các giá trị n, k đã tính toán sẵn trước khi chương trình thực thi dưới bất kỳ hình thức nào.

  • Chương trình sẽ được người chấm thực thi trong vòng 30 giây. Hết thời gian này, chương trình sẽ bị ngắt.

  • Chương trình nào in ra được nhiều cặp số n, k nhất sẽ chiến thắng.

  • Chương trình sẽ bị loại nếu in ra bất cứ cặp số n, k nào không chính xác.

Thời hạn dự thi: Từ ngày hôm nay (24/05/2010) đến hết ngày 31/05/2010.

Bài dự thi xin gửi về địa chỉ email admin+frontpage@vithon.org (xin vui lòng bỏ +frontpage trước khi gửi), bạn có thể gửi nhiều lần trong trường hợp cải thiện được kết quả của mình. Chương trình được gửi cuối cùng sẽ được nhóm PCNV sử dụng để chấm điểm chung cuộc.

Trong quá trình làm bài, nếu có nhu cầu trao đổi, đặt câu hỏi, hay chỉ đơn giản là muốn trò chuyện với những người bạn rất dễ thương trong nhóm PCNV, các bạn có thể tham gia phòng tán gẫu #vithon ở máy chủ irc.freenode.net.

Đã là cuộc thi thì không thể thiếu giải thưởng, phần thưởng cho người thắng cuộc là 100.000 VND và một buổi trò chuyện thân mật với admin nhóm PCNV.

Comments

  • anh ơi cho em hỏi, em cài Wxpython rồi, vậy qua máy khác (chỉ cài python thôi ko cài thêm wxpython) vậy có chạy đc ứng dụng của em ko?

    Comment by Thienthien — May 24, 2010 7:26:09 PM | #

  • Bài này đang nói về cuộc thi giải toán bằng Python em ạ. Câu hỏi của em lạc đề rồi. Nhưng để trả lời cho em luôn thì máy kia cũng phải cài WxPython nếu muốn chạy được chương trình của em.

    Comment by vithon — May 24, 2010 7:40:36 PM | #

  • 1 +…+ n = 1 +..+ k + kn
    => n.n + n = k.k + k + 2nk
    => n.n + n(1-2k) - k.k -k = 0 (phuong trinh theo n) => n1 , n2 theo k ....trong đó có điều kiện căn bậc 2....sư dụng điều kiện số chính phương để loại bớt k (đỡ tốn time) ....sau đó tìm ra n.....tùy biến sử dụng 1 đăng thức n theo k …để đỡ tốn time… Have fun

    Comment by ntn.itvn — May 24, 2010 10:25:56 PM | #

  • k âm hoặc n âm có được tính không?

    Comment by Hoàng Đức Hiếu — May 25, 2010 5:10:27 AM | #

  • k va n la hai so nguyen duong.

    Vi du mot cap so thoa dieu kien la n = 2, va k = 1, 1 + 2 = 3

    Comment by vithon — May 25, 2010 8:25:08 AM | #

  • Hi,
    Mình góp ý một chút về cách chấm giải:
    “Chương trình sẽ được người chấm thực thi trong vòng 30 giây. Hết thời gian này, chương trình sẽ bị ngắt.” Mình nghĩ việc “ngắt” BTC nên quy định rõ sẽ ngắt bằng OS signal nào, và quy định không được handle signal đó trong code. Thân :).

    Comment by Lê Trường Vĩnh Phú — May 26, 2010 5:59:50 PM | #

  • Không biết BGK dùng cách gì để ngắt chương trình ở giây thứ 30? Nhưng cho dù bằng cách gì đi cho nữa thì việc giới hạn 30s và đánh giá dựa trên số lượng cặp n,k thì không hay một chút nào :-).

    Các bạn sẽ xử lý thế nào khi có vài bài thi cùng in ra được 10 cặp số với thời 30s thực thi? điều này rất rất dễ xẩy ra :)) Nếu là mình thì mình sẽ ra đề theo kiểu. Trong 10^8 số nguyên dương đầu tiên (1 … 10^8) tìm các cặp số n,k thỏa mãn … Bài thi thắng là bài thì có thời gian chạy ngắn nhất!

    Mình thử viết nháp một đoạn code dùng brute force và kết quả như sau: (1…10^7): --------------------------------------------------------------------
    ★ time python test.py
    1 2
    6 14
    35 84
    204 492
    1189 2870
    6930 16730
    40391 97512
    235416 568344
    1372105 3312554
    7997214 19306982
    python test.py 18.41s user 0.00s system 99% cpu 18.426 total --------------------------------------------------------------------

    (1..10^8): --------------------------------------------------------------------
    ★ python test.py
    1 2
    6 14
    35 84
    204 492
    1189 2870
    6930 16730
    40391 97512
    235416 568344
    1372105 3312554
    7997214 19306982
    46611179 112529340
    python test.py 187.06s user 0.06s system 99% cpu 3:07.20 total ----------------------------------------------------------------------

    Comment by Heu — May 29, 2010 8:38:44 AM | #

  • “Các bạn sẽ xử lý thế nào khi có vài bài thi cùng in ra được 10 cặp số với thời 30s thực thi? điều này rất rất dễ xẩy ra :))” Mình nghĩ không có điều đó đâu bạn ơi. BTC khi ra đề đã có suy tính rồi. Với kết quả đó thì chắc chắn không thể tranh giải, mình nghĩ vậy :).

    Comment by Lê Trường Vĩnh Phú — May 30, 2010 11:44:18 PM | #