Как суммировать содержимое массива с его степенью 3

Мне нужно сделать что-то вроде этого - пользователь вводит число (например, 5), и программа показывает результат следующего действия: 1*1*1 + 2*2*2 + 3*3*3 + 4*4*4 + 5*5*5. Мой код следующий:

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    System.out.println("Enter your number:");
    int n = input.nextInt();

    int a[] = new int[n];
    int power = 0;
    int sum = 0;

    for (int i = 1; i <= a.length; i++)
    {
        power = (int) pow(i, 3);

        // Maybe here'a the problem, a[n] has not enough space for the power (???)
        sum += a[power];
    }
    System.out.println(Result: " + sum);
}

Я думаю, что понимаю, почему этот код не работает, но буду признателен за любые идеи о том, как сделать это правильно и запустить.

5 ответов

Или просто используйте математику:

введите описание изображения здесь

int n = input.nextInt();
int result = (int)(0.25 * Math.pow(n, 2)*Math.pow(1+n,2));

Или еще проще, как сказал @ajb:

int result = n*n*(n+1)*(n+1)/4;

sum += power;нет необходимости a,

Изменить:

sum += a[power];

в

a[i-1] = power;
sum += a[i-1];

или вообще забудь массив

sum += power;

sum += a[power]; не существует

Вам нужно:

  1. хранить power значение в iэлемент массива
  2. добавить iзначение массива sum

Измените ваше тело цикла на:

power = (int) pow(i, 3);
a[i - 1] = power;
sum += a[i - 1];

Вы делаете слишком много работы.

Scanner input = new Scanner(System.in);
System.out.println("Enter your number:");
int n = input.nextInt(),
    sum = 1;
for (int i=2; i<=n; i++) {
  sum += (int) Math.pow(i,3);
}

сделанный. sum теперь содержит сумму 1³ + 2³ + 3³ + ...

Или более эффективно с точно такой же функциональностью:

Scanner input = new Scanner(System.in);
System.out.println("Enter your number:");
int n = input.nextInt(),
    sum = 1;
while(n > 1) {
  sum += (int) Math.pow(n--,3);
}

Зачем? Потому что 1 + 5³ + 4³ + 3³ + 2³ совпадает с 1³ + 2³ + 3³ + 4³ + 5³

Конечно, вы также можете просто напрямую вычислить это значение, используя математические расчеты, обрезая весь алгоритм простым арифметическим инструментом.

Другие вопросы по тегам