(Điều này có thể khá cổ điển nhưng đây là bài viết đầu tiên của tôi ở đây, vì vậy tôi chưa sẵn sàng cho những thứ ưa thích)
Trình tự Goodstein được xác định cho một số đầu vào như sau:
Chọn một số bắt đầu n , đặt b = 2 và lặp lại:
- viết n trong ký hiệu cơ sở b
- thay thế tất cả ( b ) s thành ( b +1) s trong n và trừ 1
- đưa ra đánh giá thập phân mới của n
- tăng b
Ký hiệu cơ sở di truyền là một phân tách của một số trong đó cơ sở là số lớn hơn xuất hiện. Ví dụ:
83trong HB3:3^(3+1)+2226trong HB2:2^(2^(2+1))+2^(2+1)+2
Các chuỗi Goodstein luôn kết thúc ở mức 0 , nhưng trước tiên chúng có xu hướng khá lớn khá nhanh nên không được yêu cầu xuất chuỗi hoàn chỉnh.
Bài tập:
Đưa ra một số đầu vào ở bất kỳ định dạng hợp lý nào, công việc của bạn là xuất ra chuỗi Goodstein cho số này ít nhất cho đến khi nó đạt tới 10 ^ 25 hoặc 0
Ví dụ:
Input: 3
Output: 3, 3, 3, 2, 1, 0
Input: 13
Output: 13, 108, 1279, 16092, 280711, 5765998, 134219479, 3486786855, 100000003325, 3138428381103, 106993205384715, 3937376385706415, 155568095557821073, 6568408355712901455, 295147905179352838943, 14063084452067725006646, 708235345355337676376131, 37589973457545958193377292
Input: 38
Output: 38, 22876792454990
Chi tiết:
- Số đầu vào có thể là một mảng, một chuỗi, một số nguyên, miễn là nó nằm trong cơ sở thập phân
- Đầu ra tuân theo quy tắc tương tự
- Tách các thuật ngữ trong đầu ra có thể là khoảng trắng, dòng mới hoặc bất kỳ phân tách hợp lý nào
- Ngay khi chuỗi trở nên lớn hơn 10 ^ 25, chương trình của bạn có thể thoát bình thường, đưa ra lỗi / ngoại lệ hoặc tiếp tục (không hạn chế)
- Đây là môn đánh gôn , vì vậy câu trả lời ngắn nhất (tính bằng byte) sẽ thắng
- Tất nhiên, sơ hở tiêu chuẩn bị cấm
- Python không làm việc ví dụ ở đây
int(q/base.b), q%base.bcần phải q//base.b, q%base.b(hoặc đơn giản divmod(q, base.b)) để tránh các lỗi dấu phẩy động.