Речь идет о задаче, код решения которой как
раз особо большими размерами не отличается, но вот время, которое уходит даже у
сильного компьютера на ее решение, оказывается длинным-длинным…
Дана серия целых положительных чисел: 1, 2, 3 …
М. Надо в этой серии найти такое число N, для которого сумма чисел в серии
"слева" от него равна сумме чисел "справа" от него (само
число не учитывается).
Например, для серии 1, 2, 3, 4, 5, 6, 7, 8
таким числом является 6, потому что 1+2+3+4+5=15 и 7+8=15.
Надо найти все пары чисел М и N, для которых выполняется
описанное выше условие.
Эту задачу мы в принципиальном плане разобрали
с командой из Салавата и Аня прислала вчера один из вариантов решения. Я надеюсь,
что она его сегодня выложит, а от себя хочу добавить, что прогон решения для
М=100000 занял у меня на приличном компе почте 7 минут…
import java.util.*;
ОтветитьУдалитьclass mostt
{
static Scanner reader=new Scanner(System.in);
public static void main(String[] args)
{
int sum1,sum2;
for (int i=2;i<2147483647;i++)
{
for (int j=1;j<i;j++)
{
sum1=(j-1)*j/2;
sum2=((j+1+i)*(i-j))/2;
if (sum1==sum2) System.out.println("На промежутке [0;"+i+"] число "+j);
} }}}