ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1120. Сумма последовательных чисел

Why TLE # 9?????? The code is very simple!
Послано Black Raven 30 мар 2005 20:08
Please check my code:

#include <iostream>
#include <cmath>
using namespace std;
double y(double x, double z){
    double h =( 1 - 2*x + sqrt(4*x*x-4*x+1+8*z) )/2;
    if(h-floor(h) == 0)
    return h;
    else return -1;
    }

int main(){
    unsigned z;
    cin>>z;
    for(unsigned x=1; x<=z; x++)
    if(y(x, z)!=-1){
    cout<<x<<" "<<y(x, z);
    break;
    }
    return 0;
    }
Re: Why TLE # 9?????? The code is very simple!
Послано Burunduk1 31 мар 2005 01:11
I think you have TLE because of

for(unsigned x=1; x<=z; x++)

Where Z can be about 10^9...
Are you sure it will finish some day?
Re: Why TLE # 9?????? The code is very simple!
Послано Black Raven 31 мар 2005 12:04
It works rather fast. When z == 1000000000 we have "26263 25600". And what are your variants to make this program faster?
Re: Why TLE # 9?????? The code is very simple!
Послано Burunduk1 1 апр 2005 03:19
1) Bad (for your solution) test: 12224444
   (run time is about 2 sec)
2) Hint: N >= P(P-1)/2 => P is not more than 50000