Nhiệm vụ là tìm một yếu tố không tầm thường của một số tổng hợp.
Viết mã tìm thấy một yếu tố không tầm thường của một số tổng hợp càng nhanh càng tốt đối với mã của bạn dài không quá 140 byte. Đầu ra chỉ nên là yếu tố bạn đã tìm thấy.
Mã của bạn có thể lấy đầu vào và đưa ra đầu ra theo bất kỳ cách nào thuận tiện, ví dụ như là đối số cho hàm.
Các trường hợp kiểm tra liệt kê tất cả các yếu tố (bạn chỉ cần xuất một)
187: 11 17
1679: 23 73
14369648346682547857: 1500450271 9576890767
34747575467581863011: 3628273133 9576890767
52634041113150420921061348357: 2860486313 5463458053 3367900313
82312263010898855308580978867: 264575131106459 311111111111113
205255454905325730631914319249: 2860486313 71755440315342536873
1233457775854251160763811229216063007: 1110111110111 1000000000063 1111111999999
1751952685614616185916001760791655006749: 36413321723440003717 48112959837082048697
Tôi sẽ không chấm điểm câu trả lời của bạn trong trường hợp kiểm tra khó khăn sau đây có thể được quan tâm để kiểm tra:
513231721363284898797712130584280850383: 40206835204840513073 12764787846358441471
Ghi bàn
Điểm của bạn là thời gian kết hợp để tính tất cả các trường hợp kiểm tra ở trên với hình phạt 10 phút cho mỗi lần xác định không thành công (tất cả được làm tròn đến giây gần nhất). Mã của bạn cũng nên hoạt động cho các số nguyên khác, đó không chỉ là mã hóa các câu trả lời này.
Tôi sẽ dừng mã của bạn sau 10 phút.
Nếu hai người có cùng số điểm thì câu trả lời đầu tiên sẽ thắng.
Những hạn chế
Mã của bạn không thể sử dụng bất kỳ hàm dựng sẵn hoặc thư viện nào thực hiện phép nhân số nguyên. Bạn có thể giả sử đầu vào mất ít hơn 256 bit. Tất cả các số đầu vào sẽ được tổng hợp.
Tôi sẽ có thời gian như thế nào?
Tôi thực sự sẽ chạy time ./myprog
trên hệ thống Ubuntu của mình để thực hiện thời gian vì vậy vui lòng cung cấp một chương trình hoàn chỉnh để tôi chạy bao gồm bất kỳ chức năng nào bạn đã xác định.
Một lưu ý cho các ngôn ngữ được biên dịch
Thời gian biên dịch phải mất không quá 1 phút trên máy của tôi.
Có thực sự có thể?
Nếu bạn bỏ qua các hạn chế về không gian, thì mỗi cái có thể được xác định trong vòng chưa đầy 2 giây trên máy tính của tôi bằng mã Python thuần + pypy.
Vậy thuật toán bao thanh toán không tầm thường là gì?
Thuật toán rho của Pollard rất nhanh và phù hợp để chơi gôn. Tất nhiên có rất nhiều cách khác để tính một số nguyên là tốt.
Thậm chí nhanh hơn là sàng Quadratic . Có vẻ như một thách thức nghiêm trọng để ép nó thành 140 byte.
Điểm số hàng đầu
- SEJPM , hình phạt 10 phút cho trường hợp thử nghiệm cuối cùng + 16 giây trong Haskell
2
hay 2, 2
?
2 ** 1024
nào?