Сумма арифметической прогрессии
import java.util.Scanner;
public class Program
{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt(); // количество сумм,которые надо вывести
for ( int x = 0; x<i; x++ ) {
int A = scanner.nextInt(); // первое значение арифметической прогрессии
int B = scanner.nextInt(); // её шаг
int N = scanner.nextInt(); // количество членов прогрессии
int SUM = ( ( 2*A + B*(N-1) ) / 2) * N; // формула для расчета суммы арифметической прогрессии
System.out.print(SUM + " ");
}
}
}
Задания: даются определенные значение, и код должен выводить суммы арифметических прогрессий. Во время теста,некоторые значения получаются неверными. Как можно исправить?
Например, входные данные
- 10
24 15 77
27 16 56
5 8 70
2 4 56
1 8 59
10 19 88
28 0 30
27 0 78
30 18 84
24 12 28
мой ответ: 45738 26152 19670 6272 13747 73568* 840 2106 65268 5208
ожидаемый: 45738 26152 19670 6272 13747 73612* 840 2106 65268 5208
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Попробуйте сначала множить на N, а потом делить на 2...
int SUM = N*(2*A + B*(N-1))/2;
Проблема в том, что B*(N-1) может быть нечетно, и при целочисленном делении на 2 вы получите неверный ответ.