Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2022, 18:33   #1
hiroshi
Новичок
Джуниор
 
Регистрация: 12.02.2022
Сообщений: 1
По умолчанию JAVA. Найти минимальное количество слагаемых в сумме, при котором сумма превысит 1000

Здравствуйте! Дана задача для JAVA: "Найти минимальное количество слагаемых в сумме, при котором сумма превысит 1000. Кроме этого найти значение последнего слагаемого и его номер. 1*2*3 + 1*2*3*9 + 1*2*3*4*27 + ...", где нужно использовать объект - класс. Пробовал решить, но в результате ничего не получилось.
По идее, после точек в задаче должно идти 1*2*3*4*5*81, минимальное количество слагаемых будет равняться 4, а значение последнего слагаемого - 9720, но в результате моего кода выводит 4 и 1296. Вроде бы классы сделаны правильно, так что проблема находится в главном коде. Сколько не пытался исправить - делаю только хуже, так что прошу вас о помощи.

Код класса
Код:
package SeqSumCalc;
public class FactorialAndDegree {
    int f = 1;
    int d = 1;
    public void factorial(int n) {
        for (int i = 2; i <= n; i++){
            f = f * i;
        }   
    }
    public void degree(int n, int j) {
        for (int i = 1; i <= j; i++) {
            d = d * n;
        }
    }
}
Код программы
Код:
package SeqSumCalc;
public class SequenceSumCalc {
    public static void main(String[] args) {        
        FactorialAndDegree test = new FactorialAndDegree();
        int factorialBuff; // Накопитель для факториала
        int degreeBuff; // Накопитель для степени
        int sum = 0; // Сумма
        int summand = 0; // Слагаемое
        int i = 0; // Текущий номер слагаемого
        int n = 1; // Текущее значение переменной
        while (sum < 1000) {
            test.factorial (n+1);
            factorialBuff = test.f;
            test.degree(3, n);
            degreeBuff = test.d;
            summand = factorialBuff * degreeBuff;
            sum += summand;
            i++;
        }
        System.out.println("1*2*3 + 1*2*3*9 + 1*2*3*4*27 + ...");
        System.out.println("Минимальное количество слагаемых: " + i);
        System.out.println("Значение последнего слагаемого: " + summand);
        System.out.println("Сумма: " + sum); 
    }    
}

Последний раз редактировалось hiroshi; 13.02.2022 в 12:51.
hiroshi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти целое значение аргумента, при котором функция Y = (4x) / (5 * x ^ 2 4) превысит 300 - Assembler, C++ Anastasia_1488 Помощь студентам 1 22.10.2016 01:51
Составьте процедуру обнуляющую минимальное количество элементов так, чтобы сумма элементов столбца не превышала заданную KorsD Паскаль, Turbo Pascal, PascalABC.NET 3 16.01.2015 10:03
Определить количество слагаемых, необходимых для достижения заданной точности ε при исчислении числа π по разложению в ряд (язык С lizka6011997 Помощь студентам 21 17.11.2013 20:00
Дана матрица А[m,n]. Найти первый столбец, сумма элементов которого равна сумме элементов первой строки. edikesh Помощь студентам 3 01.12.2011 19:21
Найти два числа,сумма каких равняется сумме всех других чисел, которые остались! Помогите будьте людьми! Snake08 Паскаль, Turbo Pascal, PascalABC.NET 4 08.12.2008 18:33