İki n ve m sayısı verildiğinde, sonsuz güç kulesini değerlendirin:
n ^ (n + 1) ^ (n + 2) ^ (n + 3) ^ (n + 4) ^ ... mod m
^ Öğesinin doğru ilişkilendirici olduğunu unutmayın. Yani 2 ^ 3 ^ 4 = 2 ^ (3 ^ 4). Şimdi, sağ ilişkisel operatörlerin sonsuz sırasına nasıl bir değer atayabilirsiniz?
F (n, m, i) değerini, sonsuz güç kulesinin ilk i terimlerini içeren güç kulesi olarak tanımlayın. Sonra her i> C için f (n, m, i) = f (n, m, C) olacak şekilde bir sabit C vardır. Sonsuz güç kulesinin belirli bir değer üzerinde birleştiğini söyleyebilirsiniz. Bu değerle ilgileniyoruz.
Programınız makul bir modern bilgisayarda n = 2017, m = 10 ^ 10'u 10 saniyenin altında hesaplayabilmelidir. Yani, gerçek bir algoritma uygulamanız gerekir, kaba kuvvet uygulamanız gerekmez.
Programlama dilinizdeki sayısal sınırlar için n <2 30 ve m <2 50 olduğunu varsayabilirsiniz , ancak algoritmanızın teorik olarak herhangi bir n , m boyutu için çalışması gerekir . Ancak programınızın bu boyut sınırları içindeki girişler için doğru olması gerekir ; girişler bu sınırlar dahilindeyse ara değer taşmaları hariç tutulmaz .
Örnekler:
2, 10^15
566088170340352
4, 3^20
4
32, 524287
16
nvemedilir değil eş-asal olması garanti.