четверг, 10 мая 2012 г.

Длинная-длинная задача…


Речь идет о задаче, код решения которой как раз особо большими размерами не отличается, но вот время, которое уходит даже у сильного компьютера на ее решение, оказывается длинным-длинным…

Дана серия целых положительных чисел: 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 минут…

1 комментарий:

  1. 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);
    } }}}

    ОтветитьУдалить