Java

Решить задачку на языке Java. Прошу помощи так как сам работаю с другим языком, этот не знаю)

По заданной числовой последовательности 2, 13, 68, 343, 1718, … получить соответствующую рекуррентную формулу; разработать алгоритм вычисления суммы n первых элементов этой последовательности.
Serg Ches
Serg Ches
168
Тут возможных рекуррентных формул - как собак нерезанных...
Можно так, например:
 a(n + 1) = a(n) × 5 + 3 
Тогда:
 a(n + 1) = (a(n - 1) × 5 + 3) × 5 + 3 = a(n - 1) × 25 + 18 =
= (a(n - 2) × 5 + 3) × 25 + 18 = a(n - 2) × 125 + 93 =
... n-1
= a(1) × 5ⁿ + ∑5ᵏ × 3 = a(1) × 5ⁿ + (5ⁿ - 1) × 3 / 4 =
k=0
= 5ⁿ × (2 + 3/4) - 3/4 = (5ⁿ × 11 - 3) / 4
Проверим на n = 4 (a(n) = 343):
 a(4) = (11 × 5³ - 3) / 4 = (11 × 125 - 3) / 4 = 1372 / 4 = 343 

Теперь сумма:
        n       n-1
S(n) = ∑a(i) = (∑ 5ᵏ × 11 - 3n) / 4 = ((5ⁿ - 1) × 11 / 4 - 3n) / 4
i=1 k=0
Проверим на n = 4:
 S(4) = (624 × 11 / 4 - 12) / 4 = 156 × 11 / 4 - 3 = 39 × 11 - 3 = 426
2 + 13 + 68 + 343 = 426
Всё верно.

Теперь Java:
 import java.util.Scanner;

public class Main {
static long intpow(long a, short n) {
long p = 1;
while (n != 0) {
if (n % 2 != 0) p *= a;
a *= a;
n /= 2;
}
return p;
}

public static void main(String[] args) {
final Scanner sc = new Scanner(System.in);
final short n = sc.nextShort();

System.out.println(((intpow(5, n) - 1) * 11 / 4 - 3 * n) / 4);
}
}
И учитываем, что n = 22 уже не поместится в 64-битный тип.
Kenzo_Bek Abdirakhman
Kenzo_Bek Abdirakhman
87 571
Лучший ответ
Serg Ches А как код будет выглядеть?