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

Обсуждение задачи 1209. 1, 10, 100, 1000...

It accepted!!!
Послано ScaleS 17 мар 2009 13:52
It accepted!!!
Послано ScaleS 17 мар 2009 13:53
var
  n,i : word;
  p : real;

function check(A : real):boolean;
begin
  if frac((1+sqrt(8*A-7))/2) = 0.0 then check := true else check:=false;
end;

begin
  readln(n);
  for i:=1 to n do
  begin
    readln(p);
    if check(p) then write('1 ')
    else write('0 ');
  end;
end.
Re: It accepted!!!
Послано Flamer.contest 12 мар 2010 16:34
Yes, because the difference of correct answer (when you use -1) and your is 2, so there is no difference to use +1 or -1! ))))
Re: It accepted!!!
Послано zAlogic 16 дек 2010 15:20
 frac((1+sqrt(8*A-7))/2)

Where from it  formula? What means?
Re: It accepted!!!
Послано WENXIANG LU 8 ноя 2013 22:25
Could you take a look at my c++ code? I did the same as you but i never pass test #3 !!

#include <iostream>
#include <cmath>

bool isOne (long n)
{
 double intPart;
 double para = (1 + sqrt ( 8 * n -7)) / 2;
 double fractPart = modf(para, &intPart);
 if (fractPart == 0.0)
   return true;
 else
   return false;
}

int main()
{
  using namespace std;
  long value;
  long num, i = 0;

  cin >> num;
  while (i < num)
  {
    cin >> value;
    if (isOne (value))
      cout << "1 ";
    else
      cout << "0 ";

    i++;
  }
  return 0;
}