Chỉ cần quan tâm, tôi đã cố gắng giải quyết vấn đề từ danh mục "Gần đây" của Project Euler ( chuỗi Digit Sum ). Nhưng tôi không thể nghĩ ra cách giải quyết vấn đề hiệu quả. Vấn đề như sau (trong chuỗi câu hỏi ban đầu có hai câu hỏi bắt đầu, nhưng nó không thay đổi trình tự):
Chuỗi Digit Sum là 1,2,4,8,16,23,28,38,49 .... trong đó số hạng của chuỗi là tổng các chữ số đứng trước nó trong chuỗi. Tìm số hạng của chuỗi. 10 15 t h
Giải pháp ngây thơ không thể được thực hiện bởi vì nó tốn rất nhiều thời gian. Tôi đã cố gắng giảm vấn đề thành một trường hợp lũy thừa ma trận (sẽ mất thời gian ) nhưng không thể đưa ra một sự lặp lại như vậy phù hợp với tiêu chí tuyến tính vì sự tái phát cho chuỗi này là khá kỳ dị. Có thể thấy rằng trình tự bị chi phối bởi sự tái diễn:
trong đó là hạn của dãy và là một hàm mà khi được cho một số tự nhiên là đầu vào trả về tổng các chữ số của số đó (ví dụ: ). Cách tiếp cận thứ hai của tôi là cố gắng tìm một số mẫu trong chuỗi. Có thể thấy rằng một vài thuật ngữ đầu tiên của chuỗi có thể được viết là
a_1 = 1
a_2 = 1 + d( 1 )
a_3 = 1 + d( 1 ) + d( 1 + d( 1 ) )
a_4 = 1 + d( 1 ) + d( 1 + d( 1 ) ) + d( 1 + d( 1 ) + d( 1 + d( 1 ) ) )
a_5 = 1 + d( 1 ) + d( 1 + d( 1 ) ) + d( 1 + d( 1 ) + d( 1 + d( 1 ) ) ) + d( 1 + d(
1 ) + d( 1 + d( 1 ) ) + d( 1 + d( 1 ) + d( 1 + d( 1 ) ) ) )
Từ mẫu ở trên, có thể tạo ra thuật ngữ của chuỗi theo phương pháp sau:
- Viết 'với ký hiệu cộng giữa chúng.
- Rời khỏi đầu tiên , sau đó áp dụng hàm cho các điều khoản tiếp theo sau đó cho các điều khoản theo, sau đó vào các điều khoản theo, v.v.
- Sau đó áp dụng phương pháp trên một cách đệ quy trên các đối số của từng hàm được áp dụng.
ví dụ: nếu n = 3 chúng ta thực hiện các thao tác sau:
1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
1 + d( 1 ) + d( 1 + 1 ) + d( 1 + 1 + 1 + 1 )
1 + d( 1 ) + d( 1 + d(1) ) + d( 1 + d( 1 ) + d( 1 +d( 1 ) ) )
Bằng lập trình động, tôi có thể tạo ra thuật ngữ bằng cách sử dụng phương thức trên trong thời gian , một lần nữa không tốt hơn giải pháp ngây thơ. O ( l o g ( 2 10 15 ) )
EDIT 1
Một điều khác có thể được quan sát là . Ví dụ . Nhưng tôi không thể sử dụng điểm này. Tôi một lần nữa cố gắng tìm một mối quan hệ tái phát tuyến tính (đối với lũy thừa ma trận), nhưng tôi không thể tìm thấy nó.d ( a 6 ) = d ( 23 ) = d ( 32 ) = 5
CHỈNH SỬA 2
Dưới đây là biểu đồ khi chuỗi được vẽ cho phạm vi nhỏ hơn ( điều khoản đầu tiên của chuỗi được vẽ).
PS: Tôi biết không nên hỏi các giải pháp từ Project Euler. Nhưng tôi chỉ muốn một hướng đi mới hoặc một gợi ý, vì tôi đã di chuyển trong vòng tròn trong vài ngày qua. Nếu điều đó cũng không được chấp nhận, tôi có thể xóa câu hỏi nếu được đề xuất.
You are given a106 = 31054319.
trong vấn đề Euler ban đầu là một gợi ý.